Untitled
unknown
plain_text
a year ago
4.9 kB
4
Indexable
#include <xc.h> #include <libpic30.h> #include <stdio.h> #include <string.h> #include "lcd.h" #include "buttons.h" #define INITIAL_TIME (15) // Ca?kowity pocz?tkowy czas dla ka?dego gracza w sekundach volatile unsigned int czas_gry = 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(); unsigned int biale_czas = czas_gry; unsigned int czarne_czas = czas_gry; int faza_gry = 3; while (1) { // Sprawdzamy przyciski w ka?dej iteracji p?tli g?ównej if (BUTTON_IsPressed(BUTTON_S6)) { faza_gry = 0; // Mat LCD_ClearScreen(); LCD_PutString("Mat", strlen("Mat")); // Wy?wietlenie komunikatu "Mat" delay_ms(2000); // Czekamy 2 sekundy na odczyt komunikatu biale_czas = czas_gry; czarne_czas = czas_gry; faza_gry = 3; // Powrót do ekranu startowego continue; // Przeskakujemy do nast?pnej iteracji p?tli } if (BUTTON_IsPressed(BUTTON_S3) && BUTTON_IsPressed(BUTTON_S4)) { faza_gry = 0; // Remis LCD_ClearScreen(); LCD_PutString("Remis", strlen("Remis")); // Wy?wietlenie komunikatu "Remis" delay_ms(2000); // Czekamy 2 sekundy na odczyt komunikatu biale_czas = czas_gry; czarne_czas = czas_gry; faza_gry = 3; // Powrót do ekranu startowego continue; // Przeskakujemy do nast?pnej iteracji p?tli } switch (faza_gry) { case 0: // Koniec czasu - resetowanie zegarów i powrót do ekranu startowego LCD_ClearScreen(); if (biale_czas < 1) { LCD_PutString("Biale przegrywaja", strlen("Biale przegrywaja")); } else if (czarne_czas < 1) { LCD_PutString("Czarne przegrywaja", strlen("Czarne przegrywaja")); } delay_ms(10000); // Czekamy 10 sekund biale_czas = czas_gry; // Reset czasu bia?ych czarne_czas = czas_gry; // Reset czasu czarnych faza_gry = 3; break; case 1: // Tura bia?ych if (BUTTON_IsPressed(BUTTON_S3)) { faza_gry = 1; break; } sprintf(display_buffer, "%02u:%02u czarne", czarne_czas / 60, czarne_czas % 60); LCD_ClearScreen(); 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); // Czekamy 1 sekund? czarne_czas--; if (czarne_czas < 1) { faza_gry = 0; } break; case 2: // Tura czarnych if (BUTTON_IsPressed(BUTTON_S4)) { faza_gry = 2; break; } sprintf(display_buffer, "%02u:%02u biale", biale_czas / 60, biale_czas % 60); LCD_ClearScreen(); 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); // Czekamy 1 sekund? biale_czas--; if (biale_czas < 1) { faza_gry = 0; } break; case 3: // Kto zaczyna? LCD_ClearScreen(); LCD_PutString("Kto zaczyna?\n S3=b S4=cz", strlen("Kto zaczyna?\n S3=b S4=cz")); delay_ms(1000); LCD_ClearScreen(); if (BUTTON_IsPressed(BUTTON_S3)) { faza_gry = 2; // Bia?e zaczynaj? break; } if (BUTTON_IsPressed(BUTTON_S4)) { faza_gry = 1; // Czarne zaczynaj? break; } break; default: break; } // Resetowanie gry przez przytrzymanie przycisku S5 if (BUTTON_IsPressed(BUTTON_S5)) { faza_gry = 3; biale_czas = czas_gry; czarne_czas = czas_gry; } } return 0; }
Editor is loading...
Leave a Comment