Untitled
unknown
plain_text
a year ago
3.8 kB
5
Indexable
#include <xc.h>
#include <libpic30.h>
#include <stdio.h>
#include <string.h>
#include "lcd.h"
#include "buttons.h"
#define INITIAL_TIME (15) // Czas początkowy w sekundach (15 sekund dla testów)
volatile unsigned int biale_czas = INITIAL_TIME;
volatile unsigned int czarne_czas = INITIAL_TIME;
void delay_ms(unsigned long milliseconds) {
while (milliseconds--) {
__delay32(4000); // Zakładając 8 MHz FCY (8 MIPS)
}
}
int main(void) {
char display_buffer[32];
LCD_Initialize();
int faza_gry = 3; // Faza początkowa: wybór kto zaczyna
while (1) {
// Obsługa przycisków funkcyjnych (mat i remis) - bez zmian
switch (faza_gry) {
case 0: // Koniec gry (mat lub remis)
biale_czas = INITIAL_TIME;
czarne_czas = INITIAL_TIME;
faza_gry = 3; // Powrót do wyboru kto zaczyna
break;
case 1: // Tura białych
if (BUTTON_IsPressed(BUTTON_S3)) { // Przełączanie na turę czarnych
faza_gry = 2;
} else {
LCD_ClearScreen();
sprintf(display_buffer, "%02u:%02u czarne", czarne_czas / 60, czarne_czas % 60);
LCD_PutString(display_buffer, strlen(display_buffer));
LCD_PutString("\n", 1);
sprintf(display_buffer, "%02u:%02u biale", biale_czas / 60, biale_czas % 60);
LCD_PutString(display_buffer, strlen(display_buffer));
delay_ms(1000);
czarne_czas--; // Dekrementujemy czas czarnych, bo to oni czekają
if (czarne_czas == 0) {
faza_gry = 0; // Koniec czasu czarnych
LCD_PutString("Czarne przegrywaja", strlen("Czarne przegrywaja"));
delay_ms(10000); // Czas na odczytanie komunikatu
}
}
break;
case 2: // Tura czarnych (analogicznie do tury białych)
if (BUTTON_IsPressed(BUTTON_S4)) { // Przełączanie na turę białych
faza_gry = 1;
} else {
LCD_ClearScreen();
sprintf(display_buffer, "%02u:%02u biale", biale_czas / 60, biale_czas % 60);
LCD_PutString(display_buffer, strlen(display_buffer));
LCD_PutString("\n", 1);
sprintf(display_buffer, "%02u:%02u czarne", czarne_czas / 60, czarne_czas % 60);
LCD_PutString(display_buffer, strlen(display_buffer));
delay_ms(1000);
biale_czas--; // Dekrementujemy czas białych, bo to oni czekają
if (biale_czas == 0) {
faza_gry = 0; // Koniec czasu białych
LCD_PutString("Biale przegrywaja", strlen("Biale przegrywaja"));
delay_ms(10000); // Czas na odczytanie komunikatu
}
}
break;
case 3: // Wybór kto zaczyna
LCD_ClearScreen();
LCD_PutString("Kto zaczyna?\n S3=b S4=cz", strlen("Kto zaczyna?\n S3=b S4=cz"));
if (BUTTON_IsPressed(BUTTON_S3)) {
faza_gry = 2; // Białe zaczynają, więc odliczamy czas czarnych
} else if (BUTTON_IsPressed(BUTTON_S4)) {
faza_gry = 1; // Czarne zaczynają, więc odliczamy czas białych
}
break;
}
// Resetowanie gry przyciskiem S5 - bez zmian
}
return 0;
}
Editor is loading...
Leave a Comment