on commence l'interface là ouais
This commit is contained in:
138
src/GraphicalUI/main.cpp
Normal file
138
src/GraphicalUI/main.cpp
Normal file
@@ -0,0 +1,138 @@
|
||||
#include <SFML/Graphics.hpp>
|
||||
#include "../Core/Menu.h"
|
||||
#include "../Pieces/PiecesFiles.h"
|
||||
#include <iostream>
|
||||
|
||||
void setToDefaultConfig();
|
||||
|
||||
int main() {
|
||||
std::srand(std::time(NULL));
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode({800, 640}), "My window", sf::Style::Titlebar | sf::Style::Close);
|
||||
window.setPosition(sf::Vector2i(sf::VideoMode::getDesktopMode().size.x / 2 - 400, sf::VideoMode::getDesktopMode().size.y / 2 - 320));
|
||||
|
||||
PiecesFiles pf;
|
||||
for (int i = 1; i <= 10; i++) {
|
||||
pf.savePieces(i);
|
||||
}
|
||||
|
||||
Menu m;
|
||||
m.getPiecesList().loadPieces(10);
|
||||
m.getPiecesList().selectAllPieces(4);
|
||||
m.setBoardWidth(10);
|
||||
m.getPlayerControls().setDAS(6);
|
||||
m.getPlayerControls().setARR(0);
|
||||
m.getPlayerControls().setSDR(0);
|
||||
Game game = m.startGame(SPRINT);
|
||||
game.start();
|
||||
|
||||
sf::Clock clock;
|
||||
|
||||
sf::Font font;
|
||||
if (!font.openFromFile("data/fonts/arial.ttf")) {
|
||||
std::cout << "aaaaaaaaaaaaaa";
|
||||
}
|
||||
sf::Text text(font);
|
||||
text.setCharacterSize(20);
|
||||
text.setFillColor(sf::Color::White);
|
||||
|
||||
while (window.isOpen()) {
|
||||
while (const std::optional event = window.pollEvent()) {
|
||||
if (event->is<sf::Event::Closed>())
|
||||
window.close();
|
||||
}
|
||||
|
||||
if (clock.getElapsedTime().asMilliseconds() > 16) {
|
||||
clock.restart();
|
||||
|
||||
window.clear(sf::Color::Black);
|
||||
|
||||
std::set<Action> actions;
|
||||
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Left)) {
|
||||
actions.insert(MOVE_LEFT);
|
||||
}
|
||||
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Right)) {
|
||||
actions.insert(MOVE_RIGHT);
|
||||
}
|
||||
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Up)) {
|
||||
actions.insert(HARD_DROP);
|
||||
}
|
||||
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Down)) {
|
||||
actions.insert(SOFT_DROP);
|
||||
}
|
||||
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::A)) {
|
||||
actions.insert(ROTATE_CCW);
|
||||
}
|
||||
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::E)) {
|
||||
actions.insert(ROTATE_CW);
|
||||
}
|
||||
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Z)) {
|
||||
actions.insert(HOLD);
|
||||
}
|
||||
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Tab)) {
|
||||
actions.insert(ROTATE_0);
|
||||
}
|
||||
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Num2)) {
|
||||
actions.insert(ROTATE_180);
|
||||
}
|
||||
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::R)) {
|
||||
game.reset();
|
||||
game.start();
|
||||
}
|
||||
game.nextFrame(actions);
|
||||
|
||||
for (int y = game.getBoard().getBaseHeight() + 5; y >= 0; y--) {
|
||||
for (int x = 0; x < game.getBoard().getWidth(); x++) {
|
||||
bool isActivePieceHere = (game.getActivePiece() != nullptr) && (game.getActivePiece()->getPositions().contains(Position{x, y} - game.getActivePiecePosition()));
|
||||
bool isGhostPieceHere = (game.getActivePiece() != nullptr) && (game.getActivePiece()->getPositions().contains(Position{x, y} - game.ghostPiecePosition()));
|
||||
Block block = (isActivePieceHere || isGhostPieceHere) ? game.getActivePiece()->getBlockType() : game.getBoard().getBlock(Position{x, y});
|
||||
|
||||
sf::RectangleShape cell(sf::Vector2f(20.f, 20.f));
|
||||
cell.setFillColor(sf::Color(BLOCKS_COLOR[block].red, BLOCKS_COLOR[block].green, BLOCKS_COLOR[block].blue, (isGhostPieceHere && !isActivePieceHere) ? 150 : 255));
|
||||
cell.setPosition(sf::Vector2f(x*20, (game.getBoard().getBaseHeight() + 10 - y)*20));
|
||||
window.draw(cell);
|
||||
}
|
||||
}
|
||||
|
||||
if (game.getNextPieces().size() > 0) {
|
||||
for (int y = 10; y >= 0; y--) {
|
||||
for (int x = 0; x <= 10; x++) {
|
||||
Block block = game.getNextPieces().at(0).getBlockType();
|
||||
sf::RectangleShape cell(sf::Vector2f(20.f, 20.f));
|
||||
cell.setPosition(sf::Vector2f((x + 2 + game.getBoard().getWidth())*20, (game.getBoard().getBaseHeight() - y)*20));
|
||||
if (game.getNextPieces().at(0).getPositions().contains(Position({x, y}))) {
|
||||
cell.setFillColor(sf::Color(BLOCKS_COLOR[block].red, BLOCKS_COLOR[block].green, BLOCKS_COLOR[block].blue));
|
||||
}
|
||||
else {
|
||||
cell.setFillColor(sf::Color(0, 0, 0));
|
||||
}
|
||||
window.draw(cell);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (game.getHeldPiece() != nullptr) {
|
||||
for (int y = 10; y >= 0; y--) {
|
||||
for (int x = 0; x <= 10; x++) {
|
||||
Block block = game.getHeldPiece()->getBlockType();
|
||||
sf::RectangleShape cell(sf::Vector2f(20.f, 20.f));
|
||||
cell.setPosition(sf::Vector2f((x + 12 + game.getBoard().getWidth())*20, (game.getBoard().getBaseHeight() - y)*20));
|
||||
if (game.getHeldPiece()->getPositions().contains(Position({x, y}))) {
|
||||
cell.setFillColor(sf::Color(BLOCKS_COLOR[block].red, BLOCKS_COLOR[block].green, BLOCKS_COLOR[block].blue));
|
||||
}
|
||||
else {
|
||||
cell.setFillColor(sf::Color(0, 0, 0));
|
||||
}
|
||||
window.draw(cell);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
text.setPosition(sf::Vector2f(12*20, (game.getBoard().getBaseHeight() - 5)*20));
|
||||
text.setString(sf::String(std::to_string(game.getClearedLines())));
|
||||
window.draw(text);
|
||||
|
||||
window.display();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user