Działający algorytm minimax z cięciami alfa-beta.
This commit is contained in:
49
inc/game.hh
49
inc/game.hh
@@ -3,6 +3,11 @@
|
||||
|
||||
/* Plik implementuje klasę gry, w której znajduje się m.in. główna pętla gry oraz która determinuje całą rozgrywkę. */
|
||||
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <list>
|
||||
#include <algorithm>
|
||||
#include <SFML/Window.hpp>
|
||||
#include <SFML/Graphics.hpp>
|
||||
|
||||
@@ -11,6 +16,7 @@
|
||||
#include "object.hh"
|
||||
#include "pawn.hh"
|
||||
#include "board.hh"
|
||||
#include "minimax.hh"
|
||||
|
||||
// Typ wyliczeniowy rozróżniający gracza od sztucznej inteligencji
|
||||
enum Player
|
||||
@@ -19,10 +25,10 @@ enum Player
|
||||
PL_AI
|
||||
};
|
||||
|
||||
|
||||
// Klasa gry
|
||||
class Game
|
||||
{
|
||||
private:
|
||||
// Okno naszego programu
|
||||
sf::RenderWindow window;
|
||||
|
||||
@@ -30,21 +36,27 @@ private:
|
||||
Board board;
|
||||
|
||||
// Zaznaczony pionek
|
||||
Pawn* selected; // może lepiej Vector???
|
||||
Vector selected;
|
||||
|
||||
// Kolor gracza
|
||||
Color player_color;
|
||||
|
||||
// Tura(czy gracz, czy AI)
|
||||
Color round;
|
||||
|
||||
// Flaga oznaczająca sekwencję ruchów(aby gracz nie mógł zmienić pionka w trakcie gry)
|
||||
bool movements_sequence;
|
||||
|
||||
// Tura(czy gracz, czy komputer)
|
||||
// Punkty gracza
|
||||
int player_score;
|
||||
|
||||
// punkty gracza i komputera
|
||||
// Punkty AI
|
||||
int ai_score;
|
||||
|
||||
// stan gry
|
||||
|
||||
public:
|
||||
// AI
|
||||
MiniMax minimax;
|
||||
|
||||
// Konstruktor inicjalizujący parametry gry i wyzwalający pętlę główną gry
|
||||
Game();
|
||||
private:
|
||||
|
||||
// Zabij pionka (doliczając do tego punkty)
|
||||
void killPawn(Vector position);
|
||||
@@ -57,14 +69,29 @@ public:
|
||||
|
||||
// Zwróć kolor przeciwnika
|
||||
Color getAIColor() const { return (player_color==CL_WHITE)?CL_BLACK:CL_WHITE; }
|
||||
|
||||
|
||||
// Przesuń pionek na określoną pozycję uwzględniając już
|
||||
// przy tym zasady gry w warcaby
|
||||
bool movePawn(Vector position, Vector target);
|
||||
bool movePawn(Movement movement);
|
||||
|
||||
// Wykonaj turę gracza (argumentem jest jedyny możliwy sposób interakcji gracza z programem
|
||||
// czyli pozycja myszy w momencie kliknięcia lewego przycisku)
|
||||
void executePlayerRound(sf::Vector2f mouse_position);
|
||||
|
||||
// Przechwytywanie zdarzeń
|
||||
void eventHandler();
|
||||
|
||||
// Rysuje HUD (czyli ilość punktów etc.)
|
||||
void drawHUD();
|
||||
|
||||
// Główna pętla gry
|
||||
void loop();
|
||||
|
||||
public:
|
||||
|
||||
// Konstruktor inicjalizujący parametry gry i wyzwalający pętlę główną gry
|
||||
Game();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user