Gummiband

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

CodeMaster

Betreff: Gummiband

BeitragDo, März 25, 2004 23:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Titel sagt schon alles. Bitte auch mit den Werten "Masse" und "Fadenlaenge" herumprobieren...
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,0,2
SetBuffer BackBuffer()

Const Masse = 200
Const Fadenlaenge = 200

Global PosX#=400,PosY#=300,SpdX#,SpdY# = 2
MoveMouse 400,300

While Not KeyDown(1)
Cls
mx = MouseX()
my = MouseY()
ZieheBall(mx,my)
UpdateBall
Line PosX#,PosY#,mx,my
Color 255,0,0
Oval PosX#-8,PosY#-8,16,16,1
Color 255,255,255
Flip
Wend
End

Function ZieheBall(x#,y#)
SpdX# = SpdX# -Cos(Winkel#(PosX#,PosY#,x#,y#)) * Abstand#(PosX#,PosY#,x#,y#) / (Fadenlaenge * (Masse / 20))
SpdY# = SpdY# -Sin(Winkel#(PosX#,PosY#,x#,y#)) * Abstand#(PosX#,PosY#,x#,y#) / (Fadenlaenge * (Masse / 20))
End Function

Function UpdateBall()
SpdX# = SpdX# * 0.995
SpdY# = SpdY# * 0.995 + .05
PosX# = PosX# + SpdX#
PosY# = PosY# + SpdY#
If PosX# < 5 Then PosX# = 6 SpdX# = SpdX# * -0.75
If PosX# > GraphicsWidth()-5 Then PosX# = GraphicsWidth()-6 SpdX# = SpdX# * -0.75
If PosY# < 5 Then PosY# = 6 SpdY# = SpdY# * -0.75
If PosY# > GraphicsHeight()-5 Then PosY# = GraphicsHeight()-6 SpdY# = SpdY# * -0.75
End Function

Function Abstand#(x1#,y1#,x2#,y2#)
Return Sqr((x2#-x1#)^2+(y2#-y1#)^2)
End Function

Function Winkel#(x1#,y1#,x2#,y2#)
Return (450-ATan2(x1#-x2#,y1#-y2#)) Mod 360
End Function

Viel Spaß.
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102
 

CodeMaster

BeitragFr, März 26, 2004 9:10
Antworten mit Zitat
Benutzer-Profile anzeigen
So ist es noch schöner:
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,0,2 
SetBuffer BackBuffer()

Const Masse = 500
Const Fadenlaenge = 100

Global PosX#=400,PosY#=300,SpdX#,SpdY# = 2
MoveMouse 400,300

While Not KeyDown(1)
Cls
mx = MouseX()
my = MouseY()
If MouseDown(1) Then
ZieheBall(mx,my)
Line PosX#,PosY#,mx,my
EndIf
UpdateBall
Color 255,0,0
Oval PosX#-8,PosY#-8,16,16,1
Color 255,255,255
Flip
Wend
End

Function ZieheBall(x#,y#)
SpdX# = SpdX# -Cos(Winkel#(PosX#,PosY#,x#,y#)) * Abstand#(PosX#,PosY#,x#,y#) / (Fadenlaenge * (Masse / 20))
SpdY# = SpdY# -Sin(Winkel#(PosX#,PosY#,x#,y#)) * Abstand#(PosX#,PosY#,x#,y#) / (Fadenlaenge * (Masse / 20))
End Function

Function UpdateBall()
SpdX# = SpdX# * 0.995
SpdY# = SpdY# * 0.995 + .05
PosX# = PosX# + SpdX#
PosY# = PosY# + SpdY#
If PosX# < 5 Then PosX# = 6 SpdX# = SpdX# * -0.8
If PosX# > GraphicsWidth()-5 Then PosX# = GraphicsWidth()-6 SpdX# = SpdX# * -0.8
If PosY# < 5 Then PosY# = 6 SpdY# = SpdY# * -0.8
If PosY# > GraphicsHeight()-5 Then PosY# = GraphicsHeight()-6 SpdY# = SpdY# * -0.8
End Function

Function Abstand#(x1#,y1#,x2#,y2#)
Return Sqr((x2#-x1#)^2+(y2#-y1#)^2)
End Function

Function Winkel#(x1#,y1#,x2#,y2#)
Return (450-ATan2(x1#-x2#,y1#-y2#)) Mod 360
End Function

Mit der linken Maustaste kann man das Gummiband aktivieren. Ansonsten fällt der Ball wieder nach unten.
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102

Jan_

Ehemaliger Admin

BeitragFr, März 26, 2004 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
wow, ist das geil!
between angels and insects

Achim

BeitragFr, März 26, 2004 14:25
Antworten mit Zitat
Benutzer-Profile anzeigen
WOW *hut zieh*

Daraus kann man ein tolles Game entwicklen Mr. Green

CYA !
- www.softworxs.de -

Travis

BeitragFr, März 26, 2004 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Jepp finde ich auch. Das erinnert mich gleich wieder an Worms wo sich die Würmer mit ihren Seilen so schön hin und herschwingen. 8)

Ich habe dem Programm mal etwas hinzugefügt. es gibt jetzt einen Korb und man muss versuchen den Ball von oben in den Korb zu werfen.

EDIT: Es gibt jetzt ein Zeitlimit von 120 Sekunden. Außerdem kann der Ball jetzt nur 2 Sekunden lang gezogen werden, dann gibt es eine kurze Sperre. Die Punktevergabe hängt jetzt von der Ballgeschwindigkeit ab. Je schneller der Ball ins Ziel 'geballert' wird, desto mehr Punkte.

BlitzBasic: [AUSKLAPPEN]

Graphics 800,600,0,2
AppTitle "Korbball"

Const Masse = 500
Const Fadenlaenge = 100

Global PosX#=400,PosY#=300,SpdX#,SpdY# = 2
MoveMouse 400,300

Zeit = 120
KorbY = 120

KorbGfx = CreateImage(32,42)
SetBuffer ImageBuffer(KorbGfx)
Color 100,50,50
Rect 0,0,32,42
Color 75,25,25
Rect 0,0,32,5


BallGfx = CreateImage(16,16)
SetBuffer ImageBuffer(BallGfx)
Color 255,0,0
Oval 0,0,16,16
MidHandle BallGfx


Font1 = LoadFont("Arial", 32,1,0,0)
SetFont Font1


Timer1 = MilliSecs() ; Limit fürs Ballziehen
Timer2 = MilliSecs() ; Für die Spielzeit


SetBuffer BackBuffer()
While Not KeyDown(1)
Cls

If MilliSecs()-Timer2 > 1000 Then Zeit = Zeit - 1: Timer2 = MilliSecs()

If Zeit = 0 Then
Text 300, 250, "T I M E U P"
Text 250, 300, "F I N A L S C O R E: " + Punkte
Flip: WaitKey: End
EndIf

DrawImage KorbGfx, KorbX,KorbY
Text 0,0, "Score: " + Punkte
Text 600,0, "Spielzeit: " + Zeit
Text 0,30, Abs(SpdX) + Abs(SpdY)

If ImagesCollide (BallGfx, PosX#, PosY#, 0, KorbGfx, KorbX, KorbY, 0) Then
Winkel = (ATan2(KorbX+16-PosX#, KorbY+21-PosY#)+360) Mod 360

If AufprallSeite(Winkel) = 8 Then
Punkte = Punkte + Abs(SpdX) + Abs(SpdY)
KorbX = Rnd(0,550)
Text 350,300, "G O A L !"
Flip
Delay 1000
EndIf

If AufprallSeite(Winkel) = 4 Then PosX# = PosX - 10: SpdX = SpdX*-1
If AufprallSeite(Winkel) = 6 Then PosX# = PosX + 10: SpdX = SpdX*-1
If AufprallSeite(Winkel) = 2 Then PosY# = PosY + 10: SpdY = SpdY*-1

EndIf

mx = MouseX()
my = MouseY()

If MouseDown(1) And MilliSecs()-Timer1 < 2000 Then
ZieheBall(mx,my)
Line PosX#,PosY#,mx,my
EndIf

If MilliSecs() - Timer1 > 4000 Then Timer1 = MilliSecs()
If MilliSecs() - Timer1 > 2000 And MilliSecs()-Timer1 < 4000 Then Text 0,60, "Inaktiv"

UpdateBall
Color 255,0,0
DrawImage BallGfx, PosX#, PosY#
Color 255,255,255

Flip
Wend
End



Function ZieheBall(x#,y#)
SpdX# = SpdX# -Cos(Winkel#(PosX#,PosY#,x#,y#)) * Abstand#(PosX#,PosY#,x#,y#) / (Fadenlaenge * (Masse / 20))
SpdY# = SpdY# -Sin(Winkel#(PosX#,PosY#,x#,y#)) * Abstand#(PosX#,PosY#,x#,y#) / (Fadenlaenge * (Masse / 20))
End Function


Function UpdateBall()
SpdX# = SpdX# * 0.995
SpdY# = SpdY# * 0.995 + .05
PosX# = PosX# + SpdX#
PosY# = PosY# + SpdY#
If PosX# < 5 Then PosX# = 6 SpdX# = SpdX# * -0.8
If PosX# > GraphicsWidth()-5 Then PosX# = GraphicsWidth()-6 SpdX# = SpdX# * -0.8
If PosY# < 5 Then PosY# = 6 SpdY# = SpdY# * -0.8
If PosY# > GraphicsHeight()-5 Then PosY# = GraphicsHeight()-6 SpdY# = SpdY# * -0.8
End Function


Function Abstand#(x1#,y1#,x2#,y2#)
Return Sqr((x2#-x1#)^2+(y2#-y1#)^2)
End Function


Function Winkel#(x1#,y1#,x2#,y2#)
Return (450-ATan2(x1#-x2#,y1#-y2#)) Mod 360
End Function


Function Aufprallseite(Winkel)
If Winkel < 42 Or Winkel > 318 Then Seite = 8 ; Oben
If Winkel < 318 And Winkel > 222 Then Seite = 6 ; Rechts
If Winkel < 222 And Winkel > 139 Then Seite = 2 ; Unten
If Winkel < 138 And Winkel > 42 Then Seite = 4 ; Links
Return Seite
End Function
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.
  • Zuletzt bearbeitet von Travis am So, März 28, 2004 2:41, insgesamt 2-mal bearbeitet
 

Gast

BeitragSo, März 28, 2004 0:35
Antworten mit Zitat
tollll... beieindruckt bin 8)

sbrog

BeitragDo, Apr 08, 2004 22:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Anderer Gamevorschlag

du erhöhst die Masse des Balls und baust einen Zähler ein,der misst ,wie lange man braucht um den Ball gegen die Decke zu hauen

blitzattack

BeitragDi, Apr 13, 2004 10:44
Antworten mit Zitat
Benutzer-Profile anzeigen
@codemaster könnte ich den code in meinem spiel verwenden
 

CodeMaster

BeitragDi, Apr 13, 2004 11:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Natürlich, ist sogar erwünscht! Dazu habe ich ihn doch hier rein gestellt.
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102

blitzattack

BeitragDi, Apr 13, 2004 11:23
Antworten mit Zitat
Benutzer-Profile anzeigen
ok danke

tyty

BeitragFr, Apr 16, 2004 9:53
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würd das zuhause gerne in Vollbild spielen mit dem Mauszeiger:
aber ich weiß nich wo der ins programm reinsoll.


BlitzBasic: [AUSKLAPPEN]

Graphics 640,480,32,1
SetBuffer BackBuffer()
bild = LoadAnimImage("C:\Programme\Blitz2DDemo\help\resources\samples\graphics\Surfer_32by32.bmp", 32,32, 0,16)
For I=0 To 15
Cls
DrawImage bild, MouseX(), MouseY(), I
Flip
Delay 200
If I=15 Then I=0
If KeyHit(1) Then I=15
Next
WaitKey
End
User posted image

Kaikille suomea puhuville ihmisille: tyty = tyty the technical youngster!!!
 

Ensign Joe

BeitragFr, Apr 16, 2004 10:54
Antworten mit Zitat
Benutzer-Profile anzeigen
@tztz: Hier ganz ans ende der While-WEnd-Schleife denke ich:

BlitzBasic: [AUSKLAPPEN]
   DrawImage BallGfx, PosX#, PosY# 
Color 255,255,255

------------------- Da na mit dem Code ------------------------

Flip
Wend
End



Function ZieheBall(x#,y#)

tyty

BeitragFr, Apr 16, 2004 11:05
Antworten mit Zitat
Benutzer-Profile anzeigen
klappt net
die schleife vom surfer wird ja unendlich wiedrholt also muss die irgendwie richtig eingebastelt werden.
aber wie?
User posted image

Kaikille suomea puhuville ihmisille: tyty = tyty the technical youngster!!!
 

CodeMaster

BeitragFr, Apr 16, 2004 11:27
Antworten mit Zitat
Benutzer-Profile anzeigen
So wie ich das sehe, wäre folgender Lösungsansatz möglich:
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,0,2 
SetBuffer BackBuffer()

Const Masse = 500
Const Fadenlaenge = 100

Global MausBild = LoadAnimImage("C:\Programme\Blitz2DDemo\help\resources\samples\graphics\Surfer_32by32.bmp", 32,32, 0,16)

Global PosX#=400,PosY#=300,SpdX#,SpdY# = 2
MoveMouse 400,300

While Not KeyDown(1)
Cls
mx = MouseX()
my = MouseY()
ZieheBall(mx,my)
UpdateBall
Line PosX#,PosY#,mx,my
Color 255,0,0
Oval PosX#-8,PosY#-8,16,16,1
Color 255,255,255
i = (i + 1) Mod 16
DrawImage MausBild, mx, my, i
Flip
Wend
End
...
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102

tyty

BeitragFr, Apr 16, 2004 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
ok mit delay 5 bekommt der Ball die normale geschwindikeit
aber der surfer macht 2 umdrehungen pro sec kann man den surfer langsamer machen?
User posted image

Kaikille suomea puhuville ihmisille: tyty = tyty the technical youngster!!!
 

CodeMaster

BeitragFr, Apr 16, 2004 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Sicher. Tausche das "mod 16" mit "mod 160" aus und "DrawImage MausBild, mx, my, i" mit "DrawImage MausBild, mx, my, i/10". Müsste jetzt 10 mal langsamer laufen. Kannste natürlich auch deinen Wünschen entsprechend anpassen.
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102
 

brian

BeitragSa, Mai 22, 2004 13:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Proggi ist wirklich cool. Ich spiels immer wieder zwischendurch zum Entspannen. Wers abgedreht haben will, sollte mal Masse = 20 und Fadenlänge = 1 ausprobieren Laughing

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group