Wir programmieren Teil 5

Dieses ist der 5. Teil der Reihe. Hier geht es zum 4. Teil.

Aufgabe war es, die Fehler zu finden. Der 1. Fehler war einfach zu finden, das Programm ließ sich nicht kompilieren und im Editor war eine Zeile markiert. In der vorhergehenden Zeile fehlte das Semikolon (häufiger Standardfehler).

Die beiden verbleibenden Fehler konnte man erst dann finden, wenn man die Funktion des Programms überprüfte.

Zuerst dürfte auffallen, dass der Ball das Spielfeld nach unter verlässt. Also ist der Fehler in der Funktion ball() und in dem Teil y-Bewegung zu finden. Hier wurde "height+5" statt "height-5" geschrieben.

Der letzte Fehler war, dass die Schläger nicht weit genug nach unten gingen. Also ist der Fehler zu finden in der Funktion schlaeger() und dort, wo die Schläger an den Rändern festgehalten werden, damit sie sich nicht herausbewegen.

// Koordinaten und Geschwindigkeiten des Balles
float x = 0;
float y = 0;
int z=0;
float vx = 3;
float vy = 3; int[] sy=new int[2];
int[] svy={4,4};
boolean[] k=new boolean[526];
// --------------------------------------------------------
// Setup, also Erstellen des Programmfensters
void setup() {
size(300, 200); smooth(); frameRate(30);
}
// --------------------------------------------------------
// Hauptfunktion
void draw() {
background(0);
ball();
schlaeger();
}
// --------------------------------------------------------
// Funktion, in der die Bewegung des Balls stattfindet
void ball() {
fill(0,0,255); stroke(0,0,255);
ellipse(x,y,10,10);
// y-Bewegung
y=y+vy;
if (y>height-5) { y=height-5; vy=-abs(vy); }
if (y < 5 ) { y=5; vy=abs(vy);}
// x-Bewegung
x=x+vx;
if (x > width-5) {
if ( y > sy[1] && y < sy[1]+30 ) { x=width-5; vx=-abs(vx); }
else {x=5; vx=3; vy=3;}
}
if (x < 5 ){
if ( y > sy[0] && y < sy[0]+30 ) { x=5; vx=abs(vx); }
else { x=width-5; vx=-3;vy=3;}
}
// Den Ball beschleunigen
z++;
if (z>90) {
vx*=1.1;
vy*=1.1;
z=0;
}
}
// --------------------------------------------------------
// Funktion, die die Steuerung der Schläger übernimmt
void schlaeger () {
if (k[65]) { sy[0]+=-svy[0]; }
if (k[89]) { sy[0]+=+svy[0]; }
if (k[75]) { sy[1]+=-svy[1]; }
if (k[77]) { sy[1]+=+svy[1]; }
for (int i=0;i < 2;i++) {
if (sy[i] < 0) { sy[i]=0; }
if (sy[i] > height-30) { sy[i]=height-30; }
}
fill(255,0,0); stroke(255,0,0);
rect(0 ,sy[0],3,30);
fill(0,255,0); stroke(0,255,0);
rect(width-3,sy[1],3,30);
}
// --------------------------------------------------------
// Hilfsfunktionen, hier Tastaturabfragen
void keyPressed() { k[keyCode]=true; }
void keyReleased() { k[keyCode]=false;}

So, lasst uns weitermachen:

  • Wir brauchen Array vom Typ Integer, in dem die verbleibenden Leben für den jeweiligen Spieler gespeichert sind. Vorschlag: "leben" mit jeweils 5 Leben.
  • Wir brauchen weiterhin eine Variable "modus" vom Typ Integer. Ist modus==0 so befinden wir und im Spielmodus, ist modus==1, so werden Start-und Endmeldungen ausgegeben
  • Wenn ein Ball das Spielfeld verlässt, so sollte die Zahl der Leben des unfähigen Spielers verringert werden.
  • Ist die Lebenszahl eines Spielers gleich 0, so wechseln wir in den modus 1.

Ein paar Zeilen Code möchte ich euch natürlich geben:

// --------------------------------------------------------
// Hauptfunktion
void draw() {
background(0);
if (modus==0){
ball();
schlaeger();
zeige_leben();
} else {
startmeldung();
}
}
// --------------------------------------------------------
// Funktion, für die Start- und Endmeldungen
void startmeldung() {
if ( k[32] ) {
modus=0;
leben[0]=5;
leben[1]=5;
}
if (leben[0]==0) {
fill(0,255,0);
text("Spieler 2 hat gewonnen", width/2, height/2);
}
if (leben[1]==0) {
fill(255,0,0);
text("Spieler 1 hat gewonnen", width/2, height/2);
}
fill(255,255,255);
text("Zum Starten Leertaste drücken!", width/2, height-5);
}
// --------------------------------------------------------
// Funktion, um beim Spielen die zahl der Leben anzuzeigen
void zeige_leben() {
fill(0,255,0);
text(leben[1], 3*width/4, 20);
fill(255,0,0);
text(leben[0], 1*width/4, 20);
}

Mit den Aufgaben und dem Code habt ihr euer vollständiges erstes Spiel!

Aber noch ist das Spiel viel zu klein, wie wäre es mit Vollbild? Dabei müsst ihr beachten, das dann alle Angaben wir Größe der Schläger und wie Geschwindigkeiten relativ zur Fenstergröße gewählt werden müssen! Also alles ändern! Wie man auf Vollbild wechselt, findet ihr hier:

http://blogs.iad.zhdk.ch/codingspace/2010/12/09/fullscreen-library-for-processing/

.

Viel Spaß! Weiter geht es morgen mit dem Teil 6!

Vielleicht auch interessant:

Termine

  • 09.11. Exkursioon Jg. 10 Bergen-Belsen
  • 13.11. Exkursion Jg. 10 Bergen-Belsen
  • 23.12.–08.01. Weihnachtsferien
  • 11.01.–30.01. Betriebspraktikum Jg. 11
  • 11.01.–27.01. Peine in Colmar
  • 25.01.–29.01. Ski- und Snowboardfahrt 12. Jg. (Alternativtermin)
  • 27.01.–16.02. Colmar in Peine
  • 22.03.–24.03. Probenfahrt Musik
  • 22.03.–27.03. Ski- und Snowboardfahrt 12. Jg.
  • 15.04. ABI-Info IV 13. Jg.
  • 19.04. Abitur Geschichte
  • 20.04. Abitur Kunst
  • 21.04. Abitur Chemie
  • 22.04. Abitur Religion Werte und Normen
  • 23.04. Abitur Englisch
  • 26.04. Abitur Biologie
  • 27.04. Abitur Latein
  • 28.04. Abitur Französisch
  • 29.04. Abitur Erdkunde
  • 30.04. Abitur Deutsch
  • 03.05. Abitur Politik-Wirtschaft
  • 04.05. Abitur Mathematik
  • 05.05. Abitur Musik
  • 07.05. Abitur Spanisch
  • 11.05. Abitur Physik
  • 26.05.–28.05. P5-Prüfungen
  • 27.05.–29.05. Unterstufenchorfahrt
  • 28.06.–29.06. Divergenzprüfungen
  • 01.07. Abi-Entlassung 10:00-13:00
  • 10.07. Abi-Ball
  • 11.07.–17.07. England-Fahrt Jg. 7
  • 12.07.–16.07. Klassenfahrt Jg. 10
  • 12.07.–16.07. Studienfahrt Jg. 12

Programmieren und Basteln

Du interesssierst Dich für Computer, Elektronik und Programmieren?Dann schau doch einfach mal von Dienstag bis Freitag jeweils in der 7. Stunde im Computerraum 1 bzw....
Aufrufe: 8623 - 20.05.2012 mehr

Programmieren und Basteln

Liebe Schülerinnen und Schüler, leider ist eine Stunde pro Woche in der Schulzeit viel zu kurz zum Programmieren und Arduino-Basteln. Kaum hat man das...
Aufrufe: 8502 - 26.03.2012 mehr

Langweilige Präsentationen?

Oben ist nur das Standardbild zu sehen? Dann ist der Browser nicht aktuell genug, verwendet IE 9.0, Firefox, Opera, Chrome, Safari oder besser! Nutzern des IE könnte...
Aufrufe: 8226 - 23.11.2011 mehr

Wir programmieren Teil 9

Dieses ist der Teil 9 der Reihe. Hier geht es zum 8. Teil.Die Lösung für die Aufgabe habe ich als Applet heraufgeladen. Auch der Quellcode ist hier...
Aufrufe: 12621 - 05.08.2011 mehr

Wir programmieren Teil 8

Dieses ist der 8. Teil. Hier geht es zum 7. Teil.Erstmal zur Lösung:int[][] feld=new int[10][10];int[][] z=new int[10][10];int xs=0;int ys=0;//...
Aufrufe: 12287 - 05.08.2011 mehr

Wir programmieren Teil 7

Nachdem wir unser erstes Spiel programmiert haben, widmen wir uns nun weiteren sprachlichen Strukturen.Wir wollen [[Conways Spiel des Lebens]]...
Aufrufe: 12933 - 05.08.2011 mehr

Wir programmieren Teil 6

Dieses ist der 6. Teil der Reihe. Hier findet ihr den 5. Teil.Die Lösung und unser bisheriges Spiel findet ihr auf folgender Seite. Dort ist auch der...
Aufrufe: 12351 - 05.08.2011 mehr

Wir programmieren Teil 4

Dieses ist der vierte Teil, hier geht es zum 3. Teil.Zuerst wie immer zur Lösung. Dieses mal ist meine Musterlösung ggf. schwieriger zu verstehen, da...
Aufrufe: 15990 - 03.08.2011 mehr

Wir programmieren Teil 3

Dieses ist der 3. Teil der Reihe, hier geht es zum 2. Teil.Zuerst zur Lösung der kleinen Aufgaben:void setup() int x = 0;int y = 0;int vx = 3;int vy =...
Aufrufe: 15700 - 03.08.2011 mehr

Wir programmieren Teil 2

Dieses ist der 2. Teil, hier gehts zum Einstiegsteil.Zuerst mal eine möglich Lösung der kleinen Aufgaben. Die Änderungen sind fett markiert und...
Aufrufe: 16562 - 02.08.2011 mehr

Wir programmieren

In dieser Beitragsreihe könnt Ihr in das Schreiben von Computerprogrammen einsteigen. Wenn ihr Lust habt mehr mit Eurem Computer zu tun als nur zu...
Aufrufe: 13861 - 02.08.2011 mehr

Wochenend-Bastelei es geht weiter

hwNach den doch recht schleppenden Beginn geht es nun doch vorwärts. Auf der Seite http://reactivision.sourceforge.net/ fand sich die benötigte Software und ich wagte...
Aufrufe: 9611 - 20.02.2011 mehr

Wochenend-Bastelei Multitouch-Table

hwManche Projekte dauern doch etwas länger. Nachdem ich mich letztes Wochenende um die Beleuchtung der Acrylglasplatte gekümmert hatte, geht es in dieser Woche um die...
Aufrufe: 10911 - 19.02.2011 mehr

Wochenend-Bastelei gescheitert (noch)

hwTja, so kann es gehen, da nehme ich mir mein nächstes Projekt vor, besorge die Materialien und dann schaffe ich es nicht am Samstag fertig zu werden und ich denke,...
Aufrufe: 12014 - 13.02.2011 mehr

Wochenend-Bastelei

hwLanges Wochenende und ebenso lange Weile? Da kann ich helfen, beim Stöbern nach Projekten für unsere Schule stieß ich auf folgendes YouTube-Video. Das können wir...
Aufrufe: 11768 - 29.01.2011 mehr