Ejemplo n.º 1
0
int Game(int port, const char *ApplicationPath) {

	// Variabeln definieren
    char Name[20];		// Array für Spielername
    int Zeichen;		// Variable zur Verarbeitung der eingelesenen Zeichen
	int key;			// Variable zum einlesen der Zeichen von der Tastatur
	int dir = 0;		// Variable zum speichern der Richtung
	int dir_old = 0;	// Variable zum speichern der letzten Richtung
	int score;			// Variable für den Score
	int winner;			// Variable für Rückgabewert der Highscorefunktion
						// Wird 1 wenn Highscore geknackt wurde, sonst 0
	int i = 0;


	// Bildschirm löschen
	ClearWindow();

	// Spielernamen einlesen
	SelectFont("Arial MS", 15, FONT_NORMAL);
	DrawTextXY (50, 50, COL_GREEN, "Bitte Namen eingeben:");
	while((key = GetKeyPress()) != W_KEY_RETURN ){
		Zeichen = key;
		// Anzahl der Zeichen begrenzen, Leertaste unterdrücken
		if ((Zeichen >= ' ')&&(i < 19) && (Zeichen != 0x20) ){
			Name[i] = Zeichen;
			Name[i+1] = '\0';
			i++;
		}

		// Möglichkeit Zeichen zu löschen
		if( Zeichen == '\b'){
			if(i>0){
				i--;
				Name[i]='\0';
				DrawFilledRectangle(270, 25, 300, 40, COL_BLACK, 1);
			}
		}

		// Bisherige Eingabe anzeigen
		DrawTextXY (270, 50, COL_RED, Name);
	}

	DrawTextXY (50, 80, COL_GREEN, "Now playing! [ESC] to escape");

	 if (InitSerialPort(port, Bd9600, P_NONE, 8, 1) == 0)	// COM1
	 {
		 printf("\nPort opened: COM%d", port);
		 do
	     {
			 if(IsKeyPressReady())	// Wenn Taste gedrückt
			 {
	        	key = GetKeyPress();

				switch(key)
				{
				case W_KEY_CURSOR_UP:
					if(dir_old != 'd')
					{
						dir = 'u';
					}
					break;
				case W_KEY_CURSOR_DOWN:
					if(dir_old != 'u')
					{
						dir = 'd';
					}
					break;
				case W_KEY_CURSOR_LEFT:
					if(dir_old != 'r')
					{
						dir = 'l';
					}
					break;
				case W_KEY_CURSOR_RIGHT:
					if(dir_old != 'l')
					{
						dir = 'r';
					}
					break;
				case W_KEY_ESCAPE:
				case W_KEY_CLOSE_WINDOW:
					ShutdownSerialPort();
					return 0;
					break;
				default:
					key = NO_VALID_KEY;
					break;
				}
				// Nur wenn Key gültig ist und der Wert geändert hat ein Zeichen ans Carmekit senden
				if(dir != dir_old)
                {
					 SendByteToSerialPort(dir);
					 // Alter Wert speichern
					 dir_old = dir;
				}

	         }

	        score = GetByteFromSerialPort();
	     } while (score == -1);



	     ShutdownSerialPort();

	     winner=highscore(Name , score , ApplicationPath);
	     SelectFont("Arial MS", 20, FONT_ITALIC);

	     if(winner == 1)
	     {
	    	 DrawTextXY (220, 200, COL_GREEN, "Du hast den High Score geknackt!");
	     }
	     else
	     {
	    	 DrawTextXY (220, 200, COL_GREEN, "Game over.");
	     }

	     SelectFont("Arial MS", 15, FONT_NORMAL);
	     DrawTextXY (220, 230, COL_GREEN, "Press any key to continue.");

	     while(!IsKeyPressReady())
	    	 ;
	  }

	return 0;
}
Ejemplo n.º 2
0
void MenuVar(int i)
{

switch(i){

case 1:		//Hauptmenu
	SelectFont("LCD", 30, FONT_BOLD);
	DrawFilledRectangle(0, 0, 1300, 750, COL_BLACK, 2) ;
	DrawEmptyRectangle(0, 0, 1300, 750, COL_GREEN, 4) ;
	DrawTextXY(550,51,COL_GREEN,"Hauptmenu");

	DrawEmptyRectangle(150,90,1000,50, COL_GREEN, 2) ;
	DrawTextXY(550,130,COL_GREEN,"1: Level-Modus");

	DrawEmptyRectangle(150, 160,1000,50, COL_GREEN, 2) ;
	DrawTextXY(550,200,COL_GREEN,"2: Einzelspiel");

	DrawEmptyRectangle(150, 230,1000,50, COL_GREEN, 2) ;
	DrawTextXY(550,270,COL_GREEN,"3: Highscore");

	DrawEmptyRectangle(150, 440,1000,50, COL_GREEN, 2) ;
	DrawTextXY(400,480,COL_GREEN,"0: zurueck zum hauptmenu");

	break;

case 2: //Levelmodus
	SelectFont("LCD", 30, FONT_BOLD);
	DrawFilledRectangle(0, 0, 1300, 750, COL_BLACK, 1) ;
	DrawEmptyRectangle(0, 0, 1300, 750, COL_GREEN, 4) ;
	DrawTextXY(550,51,COL_GREEN,"Levelmodus");

	DrawEmptyRectangle(150, 90,1000,50, COL_GREEN, 1) ;
	DrawTextXY(350,130,COL_GREEN,"1: Ein Spieler (gegen Computer)");

	DrawEmptyRectangle(150, 160,1000,50, COL_GREEN, 1) ;
	DrawTextXY(535,200,COL_GREEN,"2: Zwei Spieler");


	DrawEmptyRectangle(150, 440,1000,50, COL_GREEN, 1) ;
	DrawTextXY(400,480,COL_GREEN,"0: zurueck zum hauptmenu");

	break;

case 3: //Einzelspiel
	SelectFont("LCD", 30, FONT_BOLD);
	DrawFilledRectangle(0, 0, 1300, 750, COL_BLACK, 1) ;
	DrawEmptyRectangle(0, 0, 1300, 750, COL_GREEN, 4) ;
	DrawTextXY(550,51,COL_GREEN,"Einzelspiel");

	DrawEmptyRectangle(150, 90,1000,50, COL_GREEN, 1) ;
		DrawTextXY(350,130,COL_GREEN,"1: Ein Spieler (gegen Computer)");

		DrawEmptyRectangle(150, 160,1000,50, COL_GREEN, 1) ;
		DrawTextXY(535,200,COL_GREEN,"2: Zwei Spieler");


		DrawEmptyRectangle(150, 440,1000,50, COL_GREEN, 1) ;
		DrawTextXY(400,480,COL_GREEN,"0: zurueck zum hauptmenu");


break;

case 4: //Schwierigkeit
	SelectFont("LCD", 30, FONT_BOLD);
	DrawFilledRectangle(0, 0, 1300, 750, COL_BLACK, 1) ;
	DrawEmptyRectangle(0, 0, 1300, 750, COL_GREEN, 4) ;
	DrawTextXY(550,51,COL_GREEN,"Schwierigkeit");

	DrawEmptyRectangle(150,90,1000,50, COL_GREEN, 1) ;
	DrawTextXY(450,130,COL_GREEN,"1: Schwierigkeitsgrad 1");

	DrawEmptyRectangle(150, 160,1000,50, COL_GREEN, 1) ;
	DrawTextXY(450,200,COL_GREEN,"2: Schwierigkeitsgrad 2");

	DrawEmptyRectangle(150, 230,1000,50, COL_GREEN, 1) ;
	DrawTextXY(450,270,COL_GREEN,"3: Schwierigkeitsgrad 3");

	DrawEmptyRectangle(150, 300,1000,50, COL_GREEN, 1) ;
	DrawTextXY(450,340,COL_GREEN,"4: Schwierigkeitsgrad 4");

	DrawEmptyRectangle(150, 370,1000,50, COL_GREEN, 1) ;
	DrawTextXY(450,410,COL_GREEN,"5: Schwierigkeitsgrad 5");

	DrawEmptyRectangle(150, 440,1000,50, COL_GREEN, 1) ;
	DrawTextXY(400,480,COL_GREEN,"0: zurueck zum hauptmenu");
break;

case 5: //Highscore
	SelectFont("LCD", 30, FONT_BOLD);
	DrawFilledRectangle(0, 0, 1300, 750, COL_BLACK, 1) ;
	DrawEmptyRectangle(0, 0, 1300, 750, COL_GREEN, 4) ;
	DrawTextXY(550,51,COL_GREEN,"Highscore");

	DrawEmptyRectangle(150,90,1000,50, COL_GREEN, 1) ;
	DrawTextXY(400,130,COL_GREEN,"1: Alle Eintraege loeschen");


	DrawEmptyRectangle(150, 440,1000,50, COL_GREEN, 1) ;
	DrawTextXY(400,480,COL_GREEN,"0: zurueck zum hauptmenu");

break;


}






















}
Ejemplo n.º 3
0
int Edit(SpielerName *Spieler)
{

	// Buffervariablen definieren

	char spielername1[15]; //lokaler string name1
	char spielername2[15];	// Lokaler string name2
	char spielerbuffer[15];	// Name buffer fuer loeschfunktion

	int key;
	int i=0;			//Countervariable



	// Buffervariablen "leeren"

	strncpy(spielername1,"              ",15);
	strncpy(spielername2,"              ",15);

	// Grundbild zeichen

	DrawFilledRectangle(0, 0, 1300, 750, COL_BLACK,1) ;		// Hintergrund
	DrawEmptyRectangle(0, 0, 1300, 750, COL_GREEN, 4) ;		// Umrandung
	DrawTextXY(550,51,COL_GREEN,"Level-Modus");
	DrawEmptyRectangle(150,90,1000,50, COL_GREEN, 2) ;
	DrawTextXY(350,130,COL_GREEN,"Name von Spieler 1 eingeben");
	DrawTextXY(550,200,COL_GREEN,spielername1);
	DrawEmptyRectangle(150, 440,1000,50, COL_GREEN, 2) ;
	DrawTextXY(550,480,COL_GREEN,"0: Beenden");
	// Spieler 1

	// Durchlauf 14 mal, bis das array voll ist

	for(i=0;i<14;i++)
	{
		key=GetKeyPress(); // Tastendruck auslesen

		if((key>=32) && (key<=128)) // Nur Gross- und Kleinbuchstaben beruecksichtigen
		{
			// Hintergrundbild aktualisieren
			DrawFilledRectangle(0, 0, 1300, 750, COL_BLACK,1) ;
			DrawEmptyRectangle(0, 0, 1300, 750, COL_GREEN, 4) ;
			DrawTextXY(550,51,COL_GREEN,"Level-Modus");
			DrawEmptyRectangle(150,90,1000,50, COL_GREEN, 2) ;
			DrawTextXY(350,130,COL_GREEN,"Name von Spieler 1 eingeben");

			spielername1[i]=key;	// Zeichenzuweisung
			DrawTextXY(550,200,COL_GREEN,spielername1);
			DrawEmptyRectangle(150, 440,1000,50, COL_GREEN, 2) ;
			DrawTextXY(550,480,COL_GREEN,"0: Beenden");
		}


		if (key==8) // 8 entspricht backspace
		{
			DrawFilledRectangle(0, 0, 1300, 750, COL_BLACK,1) ;
			strncpy(spielerbuffer,spielername1,15);		// aktueller Name zwischenspeichern
			strncpy(spielername1,"              ",15); 	// Spielername reseten
			strncpy(spielername1,spielerbuffer,i-1);	// Name zurückschreiben mit länge -1
			strncpy(spielerbuffer,"              ",15);	// Buffer löschen
			DrawEmptyRectangle(0, 0, 1300, 750, COL_GREEN, 4) ;
			DrawTextXY(550,51,COL_GREEN,"Level-Modus");
			DrawEmptyRectangle(150,90,1000,50, COL_GREEN, 2) ;
			DrawTextXY(350,130,COL_GREEN,"Name von Spieler 1 eingeben");
			DrawEmptyRectangle(150, 440,1000,50, COL_GREEN, 2) ;
			DrawTextXY(550,200,COL_GREEN,spielername1);	// Name erneut schreiben
			DrawTextXY(550,480,COL_GREEN,"0: Beenden");
			i=i-2; // Counter auf Start reseten
		}
		if (key== 13)// wenn Enter gedrückt wird (Enter = ASCII 13)
		{	i=14;		// Counter auf "voll" setzten, Schlaufe wird verlassen
		}

		if (key== '0') // Abbruch
		{
			return 0;
		}

	}





	// Spieler 2

	i=0; //Zähler reseten

	//Hintergrund zeichen
	DrawFilledRectangle(0, 0, 1300, 750, COL_BLACK,1) ;
	DrawEmptyRectangle(0, 0, 1300, 750, COL_GREEN, 4) ;
	DrawTextXY(550,51,COL_GREEN,"Level-Modus");
	DrawEmptyRectangle(150,90,1000,50, COL_GREEN, 2) ;
	DrawTextXY(350,130,COL_GREEN,"Name von Spieler 1 eingeben");
	DrawEmptyRectangle(150,250,1000,50, COL_GREEN, 2) ;
	DrawTextXY(350,290,COL_GREEN,"Name von Spieler 2 eingeben");
	DrawEmptyRectangle(150, 440,1000,50, COL_GREEN, 2) ;
	DrawTextXY(550,480,COL_GREEN,"0: Beenden");


	spielername2[i]=key;	// Zeichenzuweisung
	DrawTextXY(550,200,COL_GREEN,spielername1);
	DrawTextXY(550,360,COL_GREEN,spielername2);

	// durchlaufen bis array voll
	for(i=0;i<14;i++)
	{
		key=GetKeyPress(); // Tastendruck auslesen
		if((key>=32) && (key<=128)) // Nur Gross- und Kleinbuchstaben beruecksichtigen
		{
			//Hintergrund aktualisieren
			DrawFilledRectangle(0, 0, 1300, 750, COL_BLACK,1) ;
			DrawEmptyRectangle(0, 0, 1300, 750, COL_GREEN, 4) ;
			DrawTextXY(550,51,COL_GREEN,"Level-Modus");
			DrawEmptyRectangle(150,90,1000,50, COL_GREEN, 2) ;
			DrawTextXY(350,130,COL_GREEN,"Name von Spieler 1 eingeben");
			DrawEmptyRectangle(150,250,1000,50, COL_GREEN, 2) ;
			DrawTextXY(350,290,COL_GREEN,"Name von Spieler 2 eingeben");
			DrawEmptyRectangle(150, 440,1000,50, COL_GREEN, 2) ;
			DrawTextXY(550,480,COL_GREEN,"0: Beenden");


			spielername2[i]=key;	// Zeichenzuweisung
			DrawTextXY(550,200,COL_GREEN,spielername1);
			DrawTextXY(550,360,COL_GREEN,spielername2);
		}

		if (key==8) // 8 entspricht backspace
		{
			DrawFilledRectangle(0, 0, 1300, 750, COL_BLACK,1) ;
			strncpy(spielerbuffer,spielername2,15);		// aktueller Name zwischenspeichern
			strncpy(spielername2,"              ",15); 	// Spielername reseten
			strncpy(spielername2,spielerbuffer,i-1);	// Name zurückschreiben mit länge -1
			strncpy(spielerbuffer,"              ",15);	// Buffer löschen
			DrawEmptyRectangle(0, 0, 1300, 750, COL_GREEN, 4) ;
			DrawTextXY(550,51,COL_GREEN,"Level-Modus");
			DrawEmptyRectangle(150,90,1000,50, COL_GREEN, 2) ;
			DrawTextXY(350,130,COL_GREEN,"Name von Spieler 1 eingeben");
			DrawEmptyRectangle(150,250,1000,50, COL_GREEN, 2) ;
			DrawTextXY(350,290,COL_GREEN,"Name von Spieler 2 eingeben");
			DrawTextXY(550,200,COL_GREEN,spielername1);
			DrawTextXY(550,360,COL_GREEN,spielername2);
			DrawEmptyRectangle(150, 440,1000,50, COL_GREEN, 2) ;
			DrawTextXY(550,480,COL_GREEN,"0: Beenden");

			i=i-2; // Counter reseten
		}

		if (key== 13) // Wenn Enter, counter auf "voll", schlaufe wird verlassen
		{
			i=14;
		}

		if (key== '0') // Abbruch
		{
			return 0;
		}

	}


	// Übertrag aus buffer auf Counter übertragen

	strncpy(Spieler->Spieler1,spielername1,15);
	strncpy(Spieler->Spieler2,spielername2,15);

	return 1;
}