Gumpii-Game
Übersicht

![]() |
Falling.downBetreff: Gumpii-Game |
![]() Antworten mit Zitat ![]() |
---|---|---|
Beschreibung:
Gumpii ist ein kleines Game, bei dem die Aufgabe ist, die farbigen Bällchen mit dem Brett bei der Maus auf die andere Seite abprallen zu lassen (fast wie beim Ping-Pong), sonst fallen sie in die Hölle. ![]() Mit der Zeit kommen die Bälle immer schneller, aber es kommen auch mehr Powerups. Um das Executable des Games (game.exe) im Vollbildschirm zu spielen, in ein Batch (.bat) folgendes schreiben und dann ausführen: Code: [AUSKLAPPEN] game.exe 1280,1024 oder wie auch immer..
Code: Code: [AUSKLAPPEN] Global gwidth,gheight
s1$=CommandLine() If Instr(s1,",")<>0 Then gwidth=Mid(s1,1,Instr(s1,",")) gheight=Mid(s1,1+Instr(s1,",")) EndIf If gwidth<>0 And gheight<>0 Then Graphics gwidth,gheight,32,1 Else HidePointer gwidth=1024 gheight=768 Graphics 1024,768,32,2 EndIf Global font=LoadFont ("Arial",16) Global font1=LoadFont ("Arial",20) SetBuffer BackBuffer() Global bild1=DrawPowerup(105,134,178,255,255,255,"_",3) Global bild2=DrawPowerup(170,75,75,0,0,0,"+",7) background=createbackground() Global lichtan=0 Global licht_image=createlicht_image() SeedRnd MilliSecs() If Not ReadFile("highscore.txt") Then WriteFile ("highscore.txt") Global Powertime Type player ;sollte Kugel heissen... :S Field x# Field y# Field breit# Field hoh# Field fallspeed# Field speed# Field r Field g Field b End Type Type PowerUp Field bild Field x# Field y# Field typ# End Type Global po.PowerUp Global p.player CreateKugel() Global warten#=300 Global count#=0 Global hp=5 Global mWidth#=60,mx# Global punkte=0 HidePointer SetBuffer BackBuffer() timer=CreateTimer(60) ClsColor 5,5,5 Cls Repeat SetFont font Color 255,0,0 TileBlock background If lichtan Then DrawImage licht_image,gwidth-200,0 mx#=MouseX() If mx#>gwidth-200-(mWidth#/2.) Then mx#=gwidth-200-(mWidth#/2.) Color 100,100,100 Rect mx#-(mWidth#/2.),gheight-400,mWidth#,10,1 MoveMouse mx#,gheight-400 MouseHit1=MouseHit(1) If Powertime>0 Then mWidth#=60+Powertime^2/2000. Powertime=Powertime-1 Rect 100,10,Powertime,10 Else mWidth#=60 EndIf If KeyHit(25) Then pause() hp=hp+UpdateKugel() If hp=0 Then Exit UpdatePowerup() Color 255,255,255 Rect gwidth-200,gheight-400,200,1000 Text 10,10,"Leben: " For y=1 To hp Text 50+(y*15.),10,"+ " Next Text 10,25,"Punkte: "+punkte Color 255-(warten#-count#)/2,255+(warten#-count#)/2.,0 Rect 10,40,(warten#-count#)/2.,10 Flip WaitTimer(timer) If KeyHit(1) End Forever HighScore(punkte) Function CreateKugel() p.player=New player p\x#=10 p\y#=Rand(10,30) p\breit#=Rand(10,50) p\hoh#=20 p\speed#=Rnd(2,4) p\r=Rand(30,255) p\g=Rand(30,255) p\b=Rand(30,255) End Function Function HighScore(punkte) Cls SetFont font Color 255,255,255 file=ReadFile ("highscore.txt") bank=CreateBank(30) ReadBytes(bank,file,0,24) Text 50,50,"GAME OVER" Text 50,65,"Hightscore: " a=0 z=0 While z<24 If punkte>PeekShort(bank,z) Then Color 255,0,0 Text 150,90+15*(z-1),"<- Dein Punktestand! Top Ten!" t=22 While t>z-2 PokeShort bank,t+2,PeekShort(bank,t) t=t-2 Wend PokeShort bank,z,punkte Exit EndIf z=z+2 Wend z=0 While z<22 Color 255,255,255 Text 50,100+(15*(z-1)),((z/2.)+1)+" "+PeekShort(bank,z) z=z+2 Wend CloseFile file file=WriteFile ("highscore.txt") WriteBytes (bank,file,0,20) Flip WaitKey() End Function Function pause() Repeat Color 255,255,255 SetFont font1 Text gwidth/2.,gheight/2.-50,"Pause",True,True If KeyHit(25) Then Exit Flip Forever End Function Function UpdateKugel() Local HP=0 If count#>=warten# Then CreateKugel() count#=0 Else count#=count#+1 EndIf lichtan=0 For p.player=Each player p\x#=p\x#+p\speed# p\hoh#=p\breit+p\fallspeed# Color p\r,p\g,p\b Oval p\x#,p\y#,p\breit#,p\hoh#,1 ;p\x#=p\x#+(p\x#-mx#/2) p\y#=p\y#+p\fallspeed# If RectsOverlap(p\x#,p\y#,p\breit#,p\hoh#,mx#-mWidth#/2.,gheight-400,mWidth#,10) Or ( p\y#>(gheight-390) And p\x#>gwidth-200 And p\y#<gheight-400) Then ;Wenn die Kugel entweder den Spieler oder den "Boden" berührt dann: If p\fallspeed#>0 Then p\fallspeed#=p\fallspeed#/-1.1:p\y#=gheight-400-p\hoh ;'If' ist damit die Kugel nicht am Spieler hängenbleibt Else p\fallspeed#=p\fallspeed#+0.1 ;Geschwindigkeitszunahme beim fallen z=0 EndIf If p\x#>gwidth-200+p\breit# And gheight-390 Then p\speed#=-p\speed# ;Abprallen an der Seite des "Bodens" If p\x#>gwidth-150 Then If p\y>0 Then punkte=punkte+500-warten#+(gwidth/2.)-(gheight/5.) p\speed=p\speed*0.9 p\fallspeed=p\fallspeed-0.2 lichtan=1 Else Delete p EndIf ElseIf p\y#>gheight HP=HP-1 Delete p EndIf Next warten#=warten#-0.02 Return HP End Function Function UpdatePowerup() If Rand(1,(100+warten#))=1 Then createpowerup() For po.PowerUp=Each PowerUp po\y#=po\y#+5 DrawImage po\bild,po\x,po\y If RectsOverlap(po\x#-3,po\y#-3,23,23,mx#-mWidth#/2.,gheight-400,mWidth#,10) Then Select po\typ# Case 1 If Powertime<500 Then Powertime=Powertime+300 Case 2 hp=hp+1 End Select punkte=punkte+100 Delete po.PowerUp ElseIf po\y#>gheight Then Delete po.PowerUp EndIf Next End Function Function createpowerup() If Rand(1,4)=1 Then po.PowerUp=New PowerUp po\x#=Rnd(1,590) po\y#=0 po\typ=1 po\bild=bild1 ElseIf Rand(1,4)=1 Then po.PowerUp=New PowerUp po\x#=Rnd(1,590) po\y#=0 po\typ#=2 po\bild=bild2 EndIf End Function Function DrawPowerup(r,g,b,r1,g1,b1,Text$,y) Local bild bild=CreateImage(30,30) SetBuffer ImageBuffer(bild) Color r,g,b Rect 0, 3,26,20,1 Rect 3, 0,20,26,1 Oval 0, 0,6,6,1 Oval 0, 20,6,6,1 Oval 20, 20,6,6,1 Oval 20, 0,6,6,1 Color r1,g1,b1 Text 13,3+y,Text$,True,True Return bild End Function Function createbackground() background=CreateImage(gwidth,gheight) SetBuffer ImageBuffer(background) ClsColor 1,1,1 Cls For t= 0 To 255 Color 255-t,0,0 Rect 1,gheight+100-t,gwidth,1 Next For t= 1 To (254/2.) t1=t If t1>90 Then t1=90 Color 90-t1,90-t1,255-(t*2.) Rect 1,0+t,gwidth,1 Next SetBuffer BackBuffer() Return background End Function Function Createlicht_image() licht_image=CreateImage(200,400) SetBuffer ImageBuffer(licht_image) ClsColor 255,0,255 Cls For t=0 To 400 s=t/4.+50 Color 255-t/400.*255,255-t/400.*255,255-t/400.*255 Rect 100-s/2.,t,s,1 Next SetBuffer BackBuffer() MaskImage licht_image,255,0,255 Return licht_image End Function Mfg Falling.down Edit: Ich wäre froh um Feedbacks... (Ich weiss, dass das Spielprinzip zimlich einfach ist..) |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nicht schlecht für ein Anfänger-Projekt; hat trotzdem nichts im Codearchiv zu suchen... | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wieso nicht? Ich finde es genial. Wäre perfekt für die BCC geeignet ![]() MfG DjDETE |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
DjDETE hat Folgendes geschrieben: Wieso nicht? Ich finde es genial. Wäre perfekt für die BCC geeignet
![]() MfG DjDETE Word ! @topic Tolle sache! Jedoch wen ich das Bällchen rüber hüpfen lass verschwindet es im weissen block da und hat etwa 3 sekunden bis es wider sichtbar ist und in den "himmel" kommt ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ozzi: Das wird "hochgesaugt" ... häng mal an den Rect-Befehl in Zeile 112 ein ",0" dran, dann siehst du, was da abgeht ^^
Lustiges Spiel ![]() |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
mabox |
![]() Antworten mit Zitat ![]() |
---|---|---|
gute Spielidee!
wenn ich bloß auch so kreativ wär ![]() |
||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
FireballFlame hat Folgendes geschrieben: @ozzi: Das wird "hochgesaugt" ... häng mal an den Rect-Befehl in Zeile 112 ein ",0" dran, dann siehst du, was da abgeht ^^
Lustiges Spiel ![]() stimmt (: Nuja könnt man ändern ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Falling.down |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ozzi: Eigentlich habe ich etwas eigebaut, dass das verhindern sollte abr es funktioniert nicht wirklich ![]() @mabox: Ehrlich gesagt habe ich die Idee aus dem Internet.. Dort hatte es mal ein Game, das ähnlich funktionierte... ![]() |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Welche Zeile, kann mal nachgugen wieso das nid geht ? (bin zu faul alles durch zu gugen;)) | ||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
In der Function UpdateKugel.
Code: [AUSKLAPPEN] If RectsOverlap(p\x#,p\y#,p\breit#,p\hoh#,mx#-mWidth#/2.,gheight-400,mWidth#,10) Or RectsOverlap(p\x#,p\y#,p\breit#,p\hoh#,gwidth-200,gheight-400,200,1) Then
;Wenn die Kugel entweder den Spieler oder den "Boden" berührt dann: So sieht sie danach aus... Interessant finde ich, dass du vorher in der Zeile Rectsoverlap benutzt allerdings danach das ganze mit x>x2 and x<x3 etc auszupendeln versucht ![]() ![]() 3 Zeilen drunter versuchst du schon wieder diese AND-OR-Geschichten. Lobenswert jedoch einfacher zu lösen: Code: [AUSKLAPPEN] If RectsOverlap(p\x#,p\y#,p\breit#,p\hoh#,gwidth-200,gheight-400,1,400) Then p\speed#=-p\speed# ;Abprallen an der Seite des "Bodens"
Ach ja dein Spiel deprimiert mich wenn 2 Kugeln so kommen dass es ca unmöglich ist beide zu retten ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group