I would like to make a program that generates a random number between 1-10, gets the player to guess if the next number will be higher or lower.
My idea so far:
Fullscreen, start menu with a play button.
3 lives, displayed in the top left corner.
It will have 3 words down the bottom with Higher, Lower and Exit. The color of the word will change to red when selected.
The information and number will be displayed in the middle/top.
Gain 5 point for a right answer and -3 for wrong.
Highscore saved in a file and displayed in top right corner.
I have decided to code this in c++ and SFML, here is my code so far (question in the comments):
Stdafx.h
1 2 3 4 5
|
// Graphics
#include <SFML\Graphics.hpp>
#include <iostream>
using namespace std;
|
main.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#include "Stdafx.h"
#include "Menu.h"
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "Window", sf::Style::Fullscreen);
window.setFramerateLimit(60);
Menu menu(window.getSize().x, window.getSize().y);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event)) // Event handler
{
switch (event.type)
{
case sf::Event::KeyPressed:
switch (event.key.code)
{
case sf::Keyboard::Left:
menu.MoveLeft();
break;
case sf::Keyboard::Right:
menu.MoveRight();
break;
case sf::Keyboard::Return:
switch (menu.GetPressedItem())
{
case 0: // Play button
// What do i put here to reset my screen so i can put my actual game on the screen?
break;
case 1: // Exit
window.close();
break;
}
break;
}
break;
case sf::Event::Closed:
window.close();
break;
}
}
window.clear(sf::Color(135, 206, 250)); // Light blue
menu.draw(window); // Draw the menu
window.display(); // Display
}
return 0;
}
|
Menu.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
#pragma once
#define MAX_NUMBER_OF_ITEMS 2
class Menu
{
public:
Menu(float width, float height);
~Menu();
void draw(sf::RenderWindow &window);
void MoveLeft();
void MoveRight();
int GetPressedItem();
private:
int selectedItemIndex;
sf::Font font;
sf::Text menu[MAX_NUMBER_OF_ITEMS];
};
|
Menu.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
#include "Stdafx.h"
#include "Menu.h"
Menu::Menu(float width, float height)
{
if (!font.loadFromFile("arial.ttf"))
{
cout << "Error can not load Font!" << endl;
}
menu[0].setFont(font);
menu[0].setColor(sf::Color::Red);
menu[0].setString("Play");
menu[0].setPosition(sf::Vector2f(width / (MAX_NUMBER_OF_ITEMS + 1) * 1, height / 1.2));
menu[1].setFont(font);
menu[1].setColor(sf::Color::White);
menu[1].setString("Exit");
menu[1].setPosition(sf::Vector2f(width / (MAX_NUMBER_OF_ITEMS + 1) * 2, height / 1.2));
selectedItemIndex = 0;
}
Menu::~Menu()
{
}
void Menu::draw(sf::RenderWindow &window)
{
for (int i = 0; i < MAX_NUMBER_OF_ITEMS; i++)
{
window.draw(menu[i]);
}
}
void Menu::MoveLeft()
{
if (selectedItemIndex - 1 >= 0)
{
menu[selectedItemIndex].setColor(sf::Color::White);
selectedItemIndex--;
menu[selectedItemIndex].setColor(sf::Color::Red);
}
}
void Menu::MoveRight()
{
if (selectedItemIndex + 1 < MAX_NUMBER_OF_ITEMS)
{
menu[selectedItemIndex].setColor(sf::Color::White);
selectedItemIndex++;
menu[selectedItemIndex].setColor(sf::Color::Red);
}
}
int Menu::GetPressedItem()
{
return selectedItemIndex;
}
|
This is my first time using graphics properly so please explain as much as possible. Thanks in advance.
Edit: This is my game plan
http://imgur.com/YXN1a6A