Untitled
unknown
plain_text
a year ago
3.8 kB
12
Indexable
#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;
}
Editor is loading...
Leave a Comment