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_GAME_DURATION_SECONDS (1500) // Calkowity poczatkowy czas dla kazdego gracza w sekundach volatile unsigned int remainingTimeTotalSeconds = INITIAL_GAME_DURATION_SECONDS; void opoznienie_ms(unsigned long milisekundy) { while (milisekundy--) { __delay32(4000); // Zakladajac 8 MHz FCY (8 MIPS) } } int main(void) { char buforWyswietlacza[32]; LCD_Initialize(); unsigned int bialePozostalyCzas = remainingTimeTotalSeconds; unsigned int czarnePozostalyCzas = remainingTimeTotalSeconds; int aktualnaFaza = 3; // 3 - wybór rozpoczynajacego, 1 - tura bialych, 2 - tura czarnych, 0 - koniec gry while (1) { // Sprawdzamy przyciski w kazdej iteracji petli glównej if (BUTTON_IsPressed(BUTTON_S6)) { aktualnaFaza = 0; // Mat LCD_ClearScreen(); LCD_PutString("Mat", strlen("Mat")); opoznienie_ms(2000); bialePozostalyCzas = remainingTimeTotalSeconds; czarnePozostalyCzas = remainingTimeTotalSeconds; aktualnaFaza = 3; continue; } if (BUTTON_IsPressed(BUTTON_S3) && BUTTON_IsPressed(BUTTON_S4)) { aktualnaFaza = 0; // Remis LCD_ClearScreen(); LCD_PutString("Remis", strlen("Remis")); opoznienie_ms(2000); bialePozostalyCzas = remainingTimeTotalSeconds; czarnePozostalyCzas = remainingTimeTotalSeconds; aktualnaFaza = 3; continue; } switch (aktualnaFaza) { case 0: // Koniec czasu LCD_ClearScreen(); if (bialePozostalyCzas < 1) { LCD_PutString("Biale przegrywaja", strlen("Biale przegrywaja")); } else if (czarnePozostalyCzas < 1) { LCD_PutString("Czarne przegrywaja", strlen("Czarne przegrywaja")); } opoznienie_ms(10000); bialePozostalyCzas = remainingTimeTotalSeconds; czarnePozostalyCzas = remainingTimeTotalSeconds; aktualnaFaza = 3; break; case 1: // Tura bialych if (BUTTON_IsPressed(BUTTON_S4)) { aktualnaFaza = 2; break; } sprintf(buforWyswietlacza, "%02u:%02u biale", bialePozostalyCzas / 60, bialePozostalyCzas % 60); LCD_ClearScreen(); LCD_PutString(buforWyswietlacza, strlen(buforWyswietlacza)); LCD_PutString("\n", 1); sprintf(buforWyswietlacza, "%02u:%02u czarne", czarnePozostalyCzas / 60, czarnePozostalyCzas % 60); LCD_PutString(buforWyswietlacza, strlen(buforWyswietlacza)); opoznienie_ms(1000); bialePozostalyCzas--; if (bialePozostalyCzas < 1) { aktualnaFaza = 0; } break; case 2: // Tura czarnych if (BUTTON_IsPressed(BUTTON_S3)) { aktualnaFaza = 1; break; } sprintf(buforWyswietlacza, "%02u:%02u czarne", czarnePozostalyCzas / 60, czarnePozostalyCzas % 60); LCD_ClearScreen(); LCD_PutString(buforWyswietlacza, strlen(buforWyswietlacza)); LCD_PutString("\n", 1); sprintf(buforWyswietlacza, "%02u:%02u biale", bialePozostalyCzas / 60, bialePozostalyCzas % 60); LCD_PutString(buforWyswietlacza, strlen(buforWyswietlacza)); opoznienie_ms(1000); czarnePozostalyCzas--; if (czarnePozostalyCzas < 1) { aktualnaFaza = 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")); opoznienie_ms(1000); LCD_ClearScreen(); if (BUTTON_IsPressed(BUTTON_S3)) { aktualnaFaza = 1; break; } if (BUTTON_IsPressed(BUTTON_S4)) { aktualnaFaza = 2; break; } break; default: break; } // Resetowanie gry przez przytrzymanie przycisku S5 if (BUTTON_IsPressed(BUTTON_S5)) { aktualnaFaza = 3; bialePozostalyCzas = remainingTimeTotalSeconds; czarnePozostalyCzas = remainingTimeTotalSeconds; } } return 0; }
Editor is loading...
Leave a Comment