I am making a game with c++ and sfml for the first time and I would like someone to review my current code before I advance and add more rooms/levels, any input is gratefully appreciated. I was also wondering if I should make a .cpp file for each of my class header files, or is it ok to just put my methods with the header files.
main.cpp
#include <iostream>
#include <SFML/Graphics.hpp>
#include "Character.h"
#include "Sprite.h"
#include "Computer.h"
#include "Window.h"
//Use std
using namespace std;
//Boolean to determine if screen will scroll
int windowWidth = 5000;//width of window
int windowHeight = 5000;//height of window
sf::View dunge(sf::FloatRect(x, y, 5000, 5000));
sf::RenderWindow window(sf::VideoMode(windowWidth, windowHeight ), "Awesome Game" );
//player that is part of Character class and computer that is part of Sprite class
Character player("/Users/danielrailic/Desktop/Xcode /NewGame/ExternalLibs/Sprites/Player.png");
Sprite computer("/Users/danielrailic/Desktop/Xcode /NewGame/ExternalLibs/Sprites/CompSprite.png", 1200, 100);
Sprite battery("/Users/danielrailic/Desktop/Xcode /NewGame/ExternalLibs/Sprites/battery4.png", 0, 0);
Sprite wooddoor("/Users/danielrailic/Desktop/Xcode /NewGame/ExternalLibs/Sprites/wood_door.png", 1200, 1350);
//boolean for whether to show weapon or not
bool showweapon;
//main loop
int main() {
bool showBox = false;
//Setting up the dungeon back-round
sf::Texture dungeon;
dungeon.loadFromFile("/Users/danielrailic/Desktop/Xcode /NewGame/ExternalLibs/Sprites/DungeonBack.png");
sf::Sprite backround;
backround.setTexture(dungeon);
while (window.isOpen()){
// check all the window's events that were triggered since the last iteration of the loop
sf::Event event;
while (window.pollEvent(event)){
// "close requested" event: we close the window
if (event.type == sf::Event::Closed)
window.close();
}
//Movement
if (moveChar == true){
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)){
player.left();
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)){
player.right();
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up)){
player.forward();
}
if (sf:: Keyboard::isKeyPressed(sf::Keyboard::Down)){
player.backward();
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::LShift))
{
player.Highspeed();
}
else{
player.Lowspeed();
}
}
if (batstat == 4){
battery.changeimage("/Users/danielrailic/Desktop/Xcode /NewGame/ExternalLibs/Sprites/battery4.png");
}
if (batstat == 3){
battery.changeimage("/Users/danielrailic/Desktop/Xcode /NewGame/ExternalLibs/Sprites/battery3.png");
}
if (batstat == 2){
battery.changeimage("/Users/danielrailic/Desktop/Xcode /NewGame/ExternalLibs/Sprites/battery2.png");
}
if (batstat == 1){
battery.changeimage("/Users/danielrailic/Desktop/Xcode /NewGame/ExternalLibs/Sprites/battery1.png");
}
if (batstat == 0){
battery.changeimage("/Users/danielrailic/Desktop/Xcode /NewGame/ExternalLibs/Sprites/battery0.png");
}
if (player.getSprite().getGlobalBounds().intersects(computer.getSprite().getGlobalBounds())){
show = false;
player.hascomp = true;
}
if (player.getSprite().getGlobalBounds().intersects(wooddoor.getSprite().getGlobalBounds()) and show == false){
window.setView(dunge);
scroll = true;
showBox = true;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::A)){
moveChar = true;
}
//draw and window stuff
window.clear(sf::Color(0, 0, 0));
window.draw(backround);
if (show == true){
window.draw(computer.getSprite());
}
if (show == false){
window.draw(battery.getSprite());
window.draw(wooddoor.getSprite());
}
window.draw(player.getSprite());
window.display();
window.setFramerateLimit(70);
}
}
Sprite.h
using namespace std;
bool show = true;
class Sprite{
public:
int Spritex;
int Spritey;
string name;
sf::Texture texture;
Sprite(string image, int x, int y){
Spritex = x;
Spritey = y;
texture.loadFromFile(image);
}
sf::Sprite getSprite() {
sf::Sprite sprite;
sprite.setTexture(texture);
sprite.setPosition(Spritex, Spritey);
return sprite;
}
void changeimage(string image);
};
void Sprite:: changeimage(string image){
texture.loadFromFile(image);
}
Character.h
using namespace std;
#endif /* Character_h */
int wepx = 1200;
int wepy = 660;
int x_pos;
int y_pos;
int x = 0;
int y = 5000;
int left_limit = 110;
int right_limit = 2300;
int up_limit = 100;
int down_limit = 1400;
bool moveChar = true;
bool GoingRight = false;
bool GoingLeft = false;
bool GoingUp = false;
bool GoingDown = false;
bool scroll = false;
class Character{
public:
string sprite;
int health;
int defense;
int speed;
int highspeed;
int experience;
bool move = true;
int x_pos = 1200;
int y_pos = 600;
bool hascomp = false;
sf::Texture texture;
//Constructor - Ran everytime a new instance of the class is created
Character(string image){
health = 100;
defense = 100;
speed = 6;
experience = 0;
texture.loadFromFile(image);
}
sf::Sprite getSprite() {
sf::Sprite sprite;
sprite.setTexture(texture);
sprite.setTextureRect(sf::IntRect(0, 0, 100, 100));
sprite.setPosition(x_pos, y_pos);
return sprite;
}
//Destructor - Ran when the object is destroyed
~Character(){
}
//Methods
void forward();
void backward();
void left();
void right();
void Highspeed();
void Lowspeed();
};
void Character::forward(){
if (y_pos > up_limit){
y_pos = y_pos - speed;
wepy = wepy - speed;
GoingUp = true;
GoingDown = false;
GoingLeft = false;
GoingRight = false;
texture.loadFromFile("/Users/danielrailic/Desktop/Xcode /NewGame/ExternalLibs/Sprites/PlayerUp.png");
if (scroll == true){
y = y - speed;
}
}
}
void Character::backward(){
if (y_pos < down_limit){
y_pos = y_pos + speed;
wepy = wepy + speed;
GoingDown = true;
GoingUp = false;
GoingLeft = false;
GoingRight = false;
texture.loadFromFile("/Users/danielrailic/Desktop/Xcode /NewGame/ExternalLibs/Sprites/Player.png");
if (scroll == true){
y = y + speed;
}
}
}
void Character::left(){
if (x_pos > left_limit){
x_pos = x_pos - speed;
wepx = wepx - speed;
GoingLeft = true;
GoingRight = false;
GoingUp = false;
GoingDown = false;
texture.loadFromFile("/Users/danielrailic/Desktop/Xcode /NewGame/ExternalLibs/Sprites/PlayerLeft.png");
if (scroll == true){
x = x - speed;
}
}
}
void Character::right(){
if (x_pos < right_limit){
x_pos = x_pos + speed;
wepx = wepx + speed;
GoingRight = true;
GoingLeft = false;
GoingUp = false;
GoingDown = false;
texture.loadFromFile("/Users/danielrailic/Desktop/Xcode /NewGame/ExternalLibs/Sprites/PlayerRight.png");
if (scroll == true){
x = x + speed;
}
}
}
void Character::Highspeed(){
speed = 10;
}
void Character::Lowspeed(){
speed = 6;
}
I feel like this a mess and can be greatly improved.