Hier mein Sourcecode! Wer Verbesserungsvorschläge hat, einfach melden! int ballx, bally,richtung,player=1,com=0,zeit=2300,tick,punkt,treffx,treffy,dif,finish; int ziel,adockbreite=40,ageschwindigkeit=60,dockbreite,geschwindigkeit,lastTouch; int punkte[3]; int dock[3]; bool score,treffen; void Ton() { PlayTone(1000, 2); } void showdock(int p,int y) { int x; x=dock[p]+dockbreite; LineOut(dock[p],y,x,y); } void Countdown(string txt,int fr) { TextOut(50,30,"Ready?"); TextOut(Random(80),Random(20),txt); Wait(200); ClearScreen(); PlayTone(1000,fr); } void RandomX() { switch (Random(6)) { case 1: richtung=270; break; case 2: richtung=280; break; case 3: richtung=260; break; case 4: richtung=90; break; case 5: richtung=100; break; case 0: richtung=80; break; } } void neu() { ballx=1750; bally=1000; geschwindigkeit=ageschwindigkeit+100; dockbreite=adockbreite; RandomX(); punkt=0; ClearScreen(); Countdown("1",70); Countdown("2",70); Countdown("3",70); Countdown("GO!",200); tick=CurrentTick(); } int Anfang(int max, int min, string text1, string text2,string text3,string text4,int player,int waitt) { while (!ButtonPressed(BTN4, true)){ if (ButtonPressed(BTN2 ,true)) { player++; Ton(); } if (ButtonPressed(BTN3 ,true)) { player--; Ton(); } if (player<min) {player=min; } if (player>max) {player=max; } NumOut(10,30,player); TextOut(0,60,text1); TextOut(0,50,text2); TextOut(0,10,text3); TextOut(0,0,text4); Wait(waitt); ClearScreen(); } Ton(); while (ButtonPressed(BTN4, true)) {} return player; } bool boolFrage(string t1,string t2, string t3, string t4) { if (Anfang(2,1,t1,t2,t3,t4,1,130)==1) { return true;} else {return false;} } void menue() { score=true; ziel=3; player=Anfang(2,1,"Wie viele","Spieler spielen mit?","max. 2","",1,130); if (player==1) { com=Anfang(4,0,"Willst du","gegen einen Com","spielen? 0=Nein","hoch -> stark",2,130);dock[0]=30;} treffen=boolFrage("(2)Willst du auf","Fehler spielen?","oder Punkte","treffen(1)"); if (!treffen) { ziel=Anfang(200,1,"Auf wie viele","Fehler spielen?","","",3,130); finish=ziel; ArrayInit(punkte,0,3); } else { ziel=Anfang(200,1,"Wie viele","Treffer","werden fuer den","Sieg benoetigt?",3,130); ArrayInit(punkte,ziel,3); finish=0; } if (!boolFrage("Standardspiel","spielen?","1 -> Ja","2 -> Nein")) { adockbreite=Anfang(70,10,"Wie gross soll","das Dock sein?"," "," ",40,40); ageschwindigkeit=Anfang(80,20,"Wie schnell soll","der Ball sein?","Fast <--> Slow","",60,40); zeit=Anfang(100,3,"Wie schnell soll","es schwieriger","werden?","Fast <--> Slow",23,40); zeit*=100; score=boolFrage("Score","aktivieren?","moeglichst lange","1 = >Ja"); } if (treffen) { treffx=Random(1750); treffy=Random(1000); } } void show() { int x=ballx/35,y=bally/35; CircleOut(x,y,2); CircleOut(x,y,1); } void explo(int r) { Wait(20); CircleOut(treffx/35,treffy/35,r); } void Fertig() { if (boolFrage("GAME OVER","Willst du ein","neues Spiel mit","gleichen Einst. starten?")) { neu(); if (!treffen) { ArrayInit(punkte,0,3); } else { ArrayInit(punkte,ziel,3); } } else { StopAllTasks(); } } void prall(int p) { int x=ballx/35; int x2=dock[p]+dockbreite; x2+=4; int mitte=(x2+dock[p]-4)/2; if (x>dock[p]-4&&x<x2) { richtung=360-richtung; Ton(); if (p==1) { if (x>mitte) { richtung=richtung-x+mitte; } else { richtung=richtung+mitte-x; } bally+=80; } else { if (x>mitte) { richtung=richtung+x-mitte; } else { richtung=richtung-mitte+x; } bally-=80; } lastTouch=p; } else { PlayTone(3000, 3); Wait(100); PlayTone(2000, 3); Wait(100); PlayTone(1500, 2); Wait(100); Ton(); Wait(100); PlayTone(500,5); CircleOut(ballx/35,bally/35,6); Wait(2000); ResetRotationCount(OUT_A); if (player>1) {ResetRotationCount(OUT_B);} neu(); punkte[p]++; } } void zeig(int r) { CircleOut(ballx/35,bally/35,r); } void Treffer() { punkte[lastTouch]--; explo(3); PlayTone(500,5); explo(4); Ton(); explo(5); PlayTone(1500, 2); explo(6); PlayTone(2000, 3); explo(7); PlayTone(3000, 3); explo(8); treffx=Random(3500); treffy=Random(2000); } task main() { menue(); neu(); while (true) { Wait(geschwindigkeit); ClearScreen(); /////////////////////////////////////////////////////////////////// showdock(1,0); show(); if (player<3) {NumOut(0,20,punkte[1]);} if (score) {NumOut(0,40,punkt); punkt++;} /////////////////////////////////////////////////////////////////// dock[1]=MotorRotationCount(OUT_A)/3+30; if (bally<100) { prall(1); } if (player==1&&com==0) { if (bally>2100) { richtung=360-richtung; Ton(); bally-=60; } } if (ballx<100||ballx>3400) {richtung=180-richtung; Ton();} ballx+=Cos(richtung); bally+=Sin(richtung); /////////////////////////////////////////////////////////////////// if (player>1&&com==0) { dock[2]=MotorRotationCount(OUT_B)/3+30; showdock(2,63); if (bally>2200) { prall(2); } if (player<3) {NumOut(85,40,punkte[2]);} } /////////////////////////////////////////////////////////////////// if (treffen) { CircleOut(treffx/35,treffy/35,3); if (treffy<bally+150&&treffy>bally-150&&treffx<ballx+150&&treffx>ballx-150) { Treffer(); } } if (punkte[1]==finish) {Fertig();} if (punkte[2]==finish&&player>1) {Fertig();} if (punkte[0]==finish&&com>0) {Fertig();} /////////////////////////////////////////////////////////////////// if (com>0) { if (ballx/35>dock[0]+10){ dock[0]+=com;} if (ballx/35<dock[0]+10){ dock[0]-=com;} showdock(0,63); if (bally>2200) { prall(0); } NumOut(85,40,punkte[0]); } /////////////////////////////////////////////////////////////////// dif=CurrentTick()-tick; if (dif>zeit) { if (geschwindigkeit<30&&geschwindigkeit>10) {geschwindigkeit--;} if (geschwindigkeit>ageschwindigkeit) { geschwindigkeit-=100; zeig(5); PlayTone(1500, 3); Wait(100); zeig(6);zeig(7);PlayTone(3000, 3);Wait(100);zeig(8);PlayTone(500, 3);} else if (geschwindigkeit>29) {geschwindigkeit=geschwindigkeit-7;} if(dockbreite>3) {dockbreite--;} tick=CurrentTick(); } } } |