Tunneler anpassen 2

Voraussetzung[Bearbeiten | Quelltext bearbeiten]

Voraussetzung für dieses Arbeitsblatt ist das erfolgreiche link removed.

Nachtrag: Entpacken[Bearbeiten | Quelltext bearbeiten]

Alternativ kann man ein Archiv auch mit graphischen Tools entpacken:

  1. Verzeichnis ~/rpmbuild/SOURCES/ mit Dolphin öffnen
  2. Rechte Maustaste auf tunneler-1.1.1.tar.bz2 -> Extract -> Extract archive here, autodetect subfolder

Debugging mit printf()[Bearbeiten | Quelltext bearbeiten]

main.c: - Achte auf die erste geschweifte Klammer auf und die letzte geschweifte Klammer zu.

int main( int argc, char *argv[] )
{
    printf("main start\n");
    ...
    printf("main end\n");
}

Die Funktion system()[Bearbeiten | Quelltext bearbeiten]

main.c:

    printf("main start\n");
    system("cowsay 'Tunneler startet!'");
    system("notify-send 'Tunneler startet!'");
    system("bash -c 'play /usr/share/tong/media/tick.ogg &'");
    system("bash -c 'play /usr/share/alienarena/data1/sound/music/dm-saucer.ogg &'");

tunneler.c:

	/* Make new ammo */
	if( Tank[i].fire && Time_Now() - Tank[i].last > FIRE_DELAY && Tank[i].deathc <= 0.0 )
	{
            system("bash -c 'play /usr/share/supertuxkart/data/sfx/goo.ogg &'");

Pixel-Schrift verkleinern[Bearbeiten | Quelltext bearbeiten]

graphics.c:

void PutPixel_1( int x, int y, Uint32 color, int res_factor)
{
    SDL_Rect rect;

    int rx = RES_X * res_factor;
    int ry = RES_Y * res_factor;

    rect.x = Video_X*x/rx;
    rect.y = Video_Y*y/ry;
    rect.w = Video_X*(x+1)/rx - Video_X*x/rx;
    rect.h = Video_Y*(y+1)/ry - Video_Y*y/ry;

    SDL_FillRect( screen, &rect, color );
}

void PutPixel( int x, int y, Uint32 color )
{
    PutPixel_1(x, y, color, 1);
}

void PutChar( int x, int y, char ch, Uint32 color )
{
    int i, j;

    for( i = 0; i < 8; i++ ) {
	for( j = 0; j < 8; j++ ) {
	    if( font8x8[j][i][(int)ch] )
		PutPixel_1( x + j, y + i, color, 2 );
	}
    }
}

Ausblick[Bearbeiten | Quelltext bearbeiten]

Weitere Ideen[Bearbeiten | Quelltext bearbeiten]

  • system-Aufrufe
    • espeak
    • xcowsay
      • tunneler.c:
        	/* Death */
                int is_dead = 0;
        	if( Tank[i].Shields <= 0.0 && Tank[i].deathc <= 0.0 )
        	{
        	    Tank[i].Shields = 0.0;
        	    Explosion( Tank[i].x, Tank[i].y, 30, 1 );
        	    Tank[i].deathc = 4.0;
        	    Tank[i].deaths++;
                    is_dead = 1;
        	}
        	else if( Tank[i].Energy <= 0.0 && Tank[i].deathc <= 0.0 )
        	{
        	    Tank[i].Energy = 0.0;
        	    Explosion( Tank[i].x, Tank[i].y, 30, 1 );
        	    Tank[i].deathc = 4.0;
        	    Tank[i].deaths++;
                    is_dead = 1;
        	}
        
        	if (is_dead)
                {
                    char cmd[100];
                    sprintf(cmd, "notify-send 'Spieler %d hat das Zeitliche gesegnet.'", i);
                    system(cmd);
        
                    // 0: anz. tot rechts => Gewinn links
                    sprintf(cmd, "bash -c 'xcowsay \"Spieler %d hat das Zeitliche gesegnet.\nPunktestand:\nlinks=%d, rechts=%d\"' &", i, Tank[0].deaths, Tank[1].deaths);
                    system(cmd);
                }
  • Nachdem die Auflösung der Schrift vergrößert wurde:
    • Längere Texte möglich
    • Spielernamen als Parameter übergeben und in den Settings anstelle von "Tank 1" und "Tank 2" verwenden.
  • Programmiere dein eigenes Tunneler-Spiel mit Python und Qt.

Die Sprache C[Bearbeiten | Quelltext bearbeiten]

Bücher[Bearbeiten | Quelltext bearbeiten]

C-Strings[Bearbeiten | Quelltext bearbeiten]

Die Bibliothek SDL[Bearbeiten | Quelltext bearbeiten]

IDEs[Bearbeiten | Quelltext bearbeiten]

  • kdevelop: Funktioniert auf Anhieb; todo: beschreiben
  • Code::Blocks: ein vorhandenes Projekt zu importieren, ging nicht auf Anhieb
 Zurück