www.r-krell.de
Webangebot für Schule und Unterricht, Software, Fotovoltaik und mehr

Willkommen/Übersicht  >  Informatik  >  Informatik mit Java, Teil b)   >  Java-Autorennen


Autorennen für zwei Personen

Links oben erscheint ein Extra-Fenster mit den beiden Autos:
Wer seine Taste [R] oder [B] schneller bzw. öfter drückt, gewinnt!
Taste [N] drücken, um Straße / Fenster neu zu zeichnen.

Applet nach Zieleinlauf eines Autos mit Taste [E] beenden
-- beim Anklicken des Schließknopfes 'x'
schließt sich eventuell auch das Browserfenster!

Achtung: Java-Applets müssen zugelassen sein. Erscheint in Ihrem Browser
oben eine gelbe Leiste, bitte drauf klicken und geblockte Inhalte zulassen...!

Applet geht nicht oder wird blockiert? - Gründe, Abhilfe und alle Downloads (in neuem Tab) - nur Autorennen (r-krell.de).jar (34 kB) herunter laden



Nachfolgend der Quelltext des Autorennens „Formel 1", der auf vier Dateien verteilt ist:

Außerdem wird dargestellt, wie ein Applet aus einer Webseite aufgerufen werden kann:


zum Inhaltsverzeichnis (oben) / zum Seitenende

Erste Java-Datei: „Fomel1_Auto.java" -- Bauplan für ein bzw. für jedes Auto

// Auto fürs Formel1-Autorennen:
// R. Krell, 9/2003 -- Java-JDK + stiftUndCo
// http://www.r-krell.de


import stiftUndCo.*;
import java.awt.*; // für Color

public class Formel1_Auto
{
  
private BuntStift stift = new BuntStift();
  
private String name;
  
private int x, y;
  
  
public Formel1_Auto (int xPos, int yPos, Color farbe, String bezeichnung)
  {                   
// Konstruktor
     
x = xPos;           // füllt Datenfelder mit den übergebenen Werten ..
     
y = yPos;
     name = bezeichnung;
     stift.setzeFarbe (farbe);
     zeichneAuto (
true); // .. und zeichnet Auto erstmalig
  
}

  
private void zeichneAuto (boolean sichtbar)
  {
     
if (sichtbar)
     {
       stift.normal();
     }
     
else
     
{
       stift.radiere();
     }
     stift.hoch();
     stift.bewegeBis (x, y);
     stift.runter();
     stift.bewegeBis (x+
42, y);
     stift.bewegeBis (x+
1, y-12);
     stift.bewegeBis (x, y);          
//..Karosserie
     
stift.hoch();
     stift.bewegeBis (x+
8, y-2);       
     stift.zeichneKreis (
7);          // Hinterrad
     
stift.bewegeBis (x+33, y);
     stift.zeichneKreis (
5);          // Vorderrad
  
}

  
public void fahreUm (int deltaX)
  { 
    zeichneAuto (
false);  // löscht altes Auto
  x = x + deltaX;
  zeichneAuto (
true);   // zeichnet neues Auto
  


  
public int wo ()
  { 
    
return (x+42);   // x-Position der Spitze des Autos
  


  
public String wer ()
  {
    
return (name);
  }
    
}


zum Inhaltsverzeichnis (oben) / zum Seitenende


Zweite Java-Datei: „Fomel1_Strecke.java" -- Bauplan für die Rennstrecke

// Rennstrecke fürs Formel1-Autorennen:
// R. Krell, 9/2003 -- Java-JDK + stiftUndCo
// http://www.r-krell.de

import stiftUndCo.*;

public class Formel1_Strecke
{
  Bildschirm gelände;
  BuntStift stift;
  
int x0, x1, y0;
 
  
public Formel1_Strecke (int xStart, int xZiel, int yStart)
  {                         
// Konstruktor :
    
x0 = xStart;                  // füllt Datenfelder ..
    
x1 = xZiel;
    y0 = yStart;
    gelände = 
new Bildschirm (x1+20, y0+200,
    
 "Autorennen -- [S]=(wieder) sichtbar machen)       -- www.r-krell.de");
    stift = 
new BuntStift();      // .. und erzeugt Bildschirn und Stift
  
}
  
  
public void zeichneStrecke()
  {
    gelände.löscheAlles();        
// für nochmaligen Start
    
stift.bewegeBis (x0, y0);     // zeichnet Straße
    
stift.runter();
    stift.bewegeBis (x1, y0);
    stift.hoch();
    stift.bewegeBis (x0, y0+
50);
    stift.runter();
    stift.bewegeBis (x1, y0+
50);
    stift.hoch();
    stift.bewegeBis (x0, y0+
100);
    stift.runter();
    stift.bewegeBis (x1, y0+
100);
    stift.hoch();
    stift.bewegeBis (x0, y0+
120); // beschriftet Start und Ziel
    
stift.schreibe ("Start");
    stift.bewegeBis (x1-
20, y0+120);
    stift.schreibe (
"Ziel");
    stift.bewegeBis(
175,200);     // Spielanleitung
    
stift.schreibe ("Tasten [R] und/oder [B] drücken!");
  }
}


zum Inhaltsverzeichnis (oben) / zum Seitenende



Dritte Java-Datei: „Fomel1_Rennen.java" -- Bauplan für die Steuerung des Rennens

// Renn-Steuerung fürs Formel1-Autorennen:
// R. Krell, 9/2003 -- Java-JDK + stiftUndCo
// http://www.r-krell.de

import stiftUndCo.*;

public class Formel1_Rennen
{
  Formel1_Strecke monza = 
new Formel1_Strecke (1050050);
  Formel1_Auto ferrari, williams;
  Tastatur  taste;
  BuntStift stift;

  
public void spielen ()
  {
    
do
    
{
      monza.zeichneStrecke();
      ferrari  = 
new Formel1_Auto (1080, Farbe.ROT,  "Der rote Ferrari");
      williams = 
new Formel1_Auto (10,130, Farbe.BLAU, "Der blaue BMW-Williams");
      taste = 
new Tastatur ();
      stift = 
new BuntStift();
      rennen();
      siegerEhrung ();
    } 
while (nochmal());
  }

  
private void rennen ()
  {
    
while ((ferrari.wo()<500)&&(williams.wo()<500)) 
    
// Autos bewegen, solange keins am Ziel
    
{
      
if (taste.wurdeGedrueckt())
      {
        
switch (taste.zeichen())
        {
          
case 'r' : ;
          
case 'R' : ferrari.fahreUm (2); break// Taste [R]: ferrari 
          
case 'b' : ;
          
case 'B' : williams.fahreUm (2); break// Taste [B]: williams
          
case 's' : ;
          
case 'S' : monza.zeichneStrecke(); // Taste [S]: alles nochmal ..
                     
ferrari.fahreUm (
0);    //.. ohne Bewegung zeichnen, 
                     
williams.fahreUm (
0);   //.. weil Fenster verdeckt war
        
}
      }  
    }  
  }

  
private void siegerEhrung ()
  {
    stift.bewegeBis (
50,180);         // löscht Spielanleitung
    
stift.setzeFarbe (Farbe.WEISS);
    stift.setzeFuellMuster(Muster.GEFUELLT);
    stift.zeichneRechteck(
450,30);
    stift.setzeFarbe (Farbe.SCHWARZ);
    stift.bewegeBis(
100,200);         // nennt Gewinner
    
if (ferrari.wo()>=500)
    {                               
// wenn ferrari vorne steht
      
stift.schreibe (ferrari.wer()+
" hat gewonnen");
    }
    
else
    
{
      stift.schreibe (williams.wer()+
" hat gewonnen");
    }
  }

  
private boolean nochmal ()
  {
    stift.schreibe (
" -- [N]=Neustart, [E]=Ende");
    
char zchn;
    
do // do-Schleife: Wartet auf Taste [N] oder [E]
    
{
      
while (!taste.wurdeGedrueckt()); // nichts tun: Warten, auf Taste 
      
zchn = taste.zeichen();
      
if ((zchn == 's')||(zchn == 'S')) // evtl. noch bei Taste [S]
      
{                        
// Hinweis auf erwartete Eingabe
        
stift.bewegeBis(
140,200);
        stift.schreibe(
"Rennen beendet -- [N]=Neustart, [E]=Ende");  
      }
    } 
while ((zchn!='e')&&(zchn!='E')&&(zchn!='n')&&(zchn!='N'));
    
return ((zchn=='n')||(zchn=='N')); // true: nochmal Neustart gewünscht
  
}

}


zum Inhaltsverzeichnis (oben) / zum Seitenende


Vierte Java-Datei: „Fomel1_Start.java" --  Startdatei

// Startdatei fürs Formel1-Autorennen:
// R. Krell, 9/2003 -- Java-JDK + stiftUndCo
// http://www.r-krell.de


public class Formel1_Start extends java.applet.Applet

  
public void init()    // Start als Applet bzw. ..
  
{
    Formel1_Rennen rennSpiel = 
new Formel1_Rennen();
    rennSpiel.spielen();
  }
  
  
public static void main (String[] s) //.. als Application
  
{
    Formel1_Rennen rennSpiel = 
new Formel1_Rennen();
    rennSpiel.spielen();
  }
}




zum Inhaltsverzeichnis (oben) / zum Seitenende


HTML-Datei: Quelltext einer Webseite zum Start als Applet

Hier die wesentlichen Elemente einer HTML-Seite, die das Applet aufruft - wie in der Quelltext-Ansicht des HTML-Editors phase 5 angezeigt (Bezugsquelle siehe meine Java-Seite a)).

Ansicht HTML-Editor mit Quelltext für Webseite zur Applet-Einbettung

Beim Aufruf bzw. bei der Anzeige der Webseite im Browser wird das Applet dann automatisch geladen und gestartet. Das Archiv mit den class-Dateien muss dazu mit der Webseite auf den Server geladen werden - wenn (wie hier) keine besonderen Pfadangaben gemacht werden, muss das Archiv dort ins gleiche Verzeichnis wie die Webseite!


zurück zur Seite „Informatik mit Java, Teil b)"




zum Anfang dieser Seite
Willkommen/Übersicht   -   Was ist neu?   -   Software   -   Mathematik   -   Physik   -   Informatik   -   Schule: Lessing-Gymnasium und -Berufskolleg   -   Fotovoltaik   -   & mehr   -   Kontakt: e-Mail,  News-Abo, Gästebuch, Impressum   -  Grußkarten, site map, Download und Suche

Diese Seite ist Teil des Webangebots http://www.r-krell.de. Sie können diese Seite per e-Mail weiter empfehlen (tell a friend).