Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
3.8 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_p1 (3) // w sekundach dla gracza 1
#define TOTAL_TIME_p2 (3) // w sekundach dla gracza 2

volatile unsigned int seconds_p1 = TOTAL_TIME_p1;
volatile unsigned int seconds_p2 = TOTAL_TIME_p2;

int main(void) {
    char buffer[32]; // Bufor dla obu czasów
    LCD_Initialize(); 
    unsigned int remainingSeconds_p1 = seconds_p1;
    unsigned int remainingSeconds_p2 = seconds_p2;
    int zmiana = 3;

    while(true) {
        switch(zmiana) {
            
            if (BUTTON_IsPressed ( BUTTON_S6 ) == true) {
                zmiana = 3;
            }

            case 0:  // Koniec czasu
                LCD_ClearScreen();
                if(remainingSeconds_p1 < 1) {
                    LCD_PutString("Koniec czasu p1", strlen("Koniec czasu p1"));
                } else {
                    LCD_PutString("Koniec czasu p2", strlen("Koniec czasu p2"));
                }
                __delay32(4000000); // Czekamy 10 sekund
                zmiana = 3;  // Reset do ekranu startowego

            case 1:  // Tura gracza 1
                if (BUTTON_IsPressed(BUTTON_S3) == true) {
                    remainingSeconds_p1 += 2;
                    zmiana = 2;
                    break;
                }
                // Formatowanie i wyświetlanie czasu gracza 1
                sprintf(buffer, "%02u:%02u p1", remainingSeconds_p1 / 60, remainingSeconds_p1 % 60);
                LCD_ClearScreen();
                LCD_PutString(buffer, strlen(buffer));
                LCD_PutString("\n", 1); // Nowa linia
                // Formatowanie i wyświetlanie czasu gracza 2 (bez zmniejszania)
                sprintf(buffer, "%02u:%02u p2", remainingSeconds_p2 / 60, remainingSeconds_p2 % 60);
                LCD_PutString(buffer, strlen(buffer));
                __delay32(4000000); // Czekamy sekundę
                remainingSeconds_p1--;
                if(remainingSeconds_p1 < 1) {
                    zmiana = 0;
                }
                break;

            case 2:  // Tura gracza 2 - analogicznie do case 1
                if (BUTTON_IsPressed ( BUTTON_S4 ) == true) {
                    remainingSeconds_p2 = remainingSeconds_p2 + 2;
                    zmiana = 1;
                    break;
                }
                // Formatowanie i wyświetlanie czasu gracza 2
                sprintf(buffer, "%02u:%02u p2", remainingSeconds_p2 / 60, remainingSeconds_p2 % 60);
                LCD_ClearScreen();
                LCD_PutString(buffer, strlen(buffer));
                LCD_PutString("\n", 1); // Nowa linia
                // Formatowanie i wyświetlanie czasu gracza 1 (bez zmniejszania)
                sprintf(buffer, "%02u:%02u p1", remainingSeconds_p1 / 60, remainingSeconds_p1 % 60);
                LCD_PutString(buffer, strlen(buffer));
                __delay32(4000000); //czekamy sekundę
                remainingSeconds_p2--;
                if(remainingSeconds_p2 < 1) {
                    zmiana = 0;
                }
                break;


            case 3:
                LCD_PutString("Kto zaczyna?\n s3=p1 s4=p2",32);
                __delay32(4000000);
                LCD_ClearScreen();
                if (BUTTON_IsPressed ( BUTTON_S3 ) == true) {
                    zmiana = 1;
                    break;
                }
                if (BUTTON_IsPressed ( BUTTON_S4 ) == true) {
                    zmiana = 2;
                    break;
                }

            default:
                break;
        }
    }
    return 0;
}
Leave a Comment