Untitled

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