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 (5) // Czas dla białych #define TOTAL_TIME_BLACK (5) // 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 - b przegrywaja", strlen("Koniec czasu - b przegrywaja")); } else { LCD_PutString("Koniec czasu - cz przegrywaja", strlen("Koniec czasu - cz przegrywaja")); } __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 biale", 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 biale", 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=cz s4=b",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