Untitled

mail@pastecode.io avatar
unknown
plain_text
24 days ago
4.9 kB
2
Indexable
Never
#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;
}
Leave a Comment