Untitled
unknown
plain_text
a year ago
3.9 kB
5
Indexable
#include <xc.h>
#include <libpic30.h>
#include <stdio.h>
#include <string.h>
#include "lcd.h"
#include "buttons.h"
#define TOTAL_TIME_WHITE (3) // Czas dla białych
#define TOTAL_TIME_BLACK (3) // Czas dla czarnych
volatile unsigned int secondsWhite = TOTAL_TIME_WHITE;
volatile unsigned int secondsBlack = TOTAL_TIME_BLACK;
int main(void) {
char buffer[32];
LCD_Initialize();
unsigned int remainingSecondsWhite = secondsWhite;
unsigned int remainingSecondsBlack = secondsBlack;
int gamePhase = 3; // 0: koniec czasu, 1: tura białych, 2: tura czarnych, 3: start
while(true) {
switch(gamePhase) {
if (BUTTON_IsPressed ( BUTTON_S6 ) == true) {
gamePhase = 3;
}
case 0: // Koniec czasu
LCD_ClearScreen();
if(remainingSecondsWhite < 1) {
LCD_PutString("Koniec czasu - białe przegrywają", strlen("Koniec czasu - białe przegrywają"));
} else {
LCD_PutString("Koniec czasu - czarne przegrywają", strlen("Koniec czasu - czarne przegrywają"));
}
__delay32(4000000); // Czekamy 10 sekund
gamePhase = 3; // Reset do ekranu startowego
case 1: // Tura białych
if (BUTTON_IsPressed(BUTTON_S3) == true) {
remainingSecondsWhite += 2;
gamePhase = 2;
break;
}
// Formatowanie i wyświetlanie czasu białych
sprintf(buffer, "%02u:%02u białe", remainingSecondsWhite / 60, remainingSecondsWhite % 60);
LCD_ClearScreen();
LCD_PutString(buffer, strlen(buffer));
LCD_PutString("\n", 1);
// Formatowanie i wyświetlanie czasu czarnych (bez zmniejszania)
sprintf(buffer, "%02u:%02u czarne", remainingSecondsBlack / 60, remainingSecondsBlack % 60);
LCD_PutString(buffer, strlen(buffer));
__delay32(4000000); // Czekamy sekundę
remainingSecondsWhite--;
if(remainingSecondsWhite < 1) {
gamePhase = 0;
}
break;
case 2: // Tura czarnych - analogicznie do case 1
if (BUTTON_IsPressed ( BUTTON_S4 ) == true) {
remainingSecondsBlack = remainingSecondsBlack + 2;
gamePhase = 1;
break;
}
// Formatowanie i wyświetlanie czasu czarnych
sprintf(buffer, "%02u:%02u czarne", remainingSecondsBlack / 60, remainingSecondsBlack % 60);
LCD_ClearScreen();
LCD_PutString(buffer, strlen(buffer));
LCD_PutString("\n", 1);
// Formatowanie i wyświetlanie czasu białych (bez zmniejszania)
sprintf(buffer, "%02u:%02u białe", remainingSecondsWhite / 60, remainingSecondsWhite % 60);
LCD_PutString(buffer, strlen(buffer));
__delay32(4000000);
remainingSecondsBlack--;
if(remainingSecondsBlack < 1) {
gamePhase = 0;
}
break;
case 3: // Kto zaczyna?
LCD_PutString("Kto zaczyna?\n s3=białe s4=czarne",32);
__delay32(4000000);
LCD_ClearScreen();
if (BUTTON_IsPressed ( BUTTON_S3 ) == true) {
gamePhase = 1;
break;
}
if (BUTTON_IsPressed ( BUTTON_S4 ) == true) {
gamePhase = 2;
break;
}
default:
break;
}
}
return 0;
}
Editor is loading...
Leave a Comment