Minigame-Ballpunch (Blitz/Blitz3D)
Übersicht Sonstiges Projekte
stfighter01Betreff: Minigame-Ballpunch (Blitz/Blitz3D) |
Sa, Dez 01, 2007 13:16 Antworten mit Zitat |
|
---|---|---|
Mir ist einfach so in den Sinn gekommen das so etwas ganz lustig sein könnte, darum habe ich es auch gleich umgesetzt.
Für die paar zeilen code wollte ich keine 1.2MB uploaden, darum bitte selber kompilieren. Wie lange haltet ihr durch? mein Record bisher 22.4 Sekunden Einfach ausweichen, sollte selbsterklärend sein. ( Rechts oben steht die bisherige Bestzeit ) Code: [AUSKLAPPEN] Graphics 1024, 768, 16, 1 Global mainrad = 10 Global mainx# Global mainy# Global maxx = 1024 Global maxy = 758 Global time$ Global vnorm# Global besttime =0 Global physikfrequency# = 75;Hz Global physikupdates# Global physikstarttime Global physikacttime Global startime, actualtime Type punchball Field x# Field y# Field vx# Field vy# Field radius# Field speeddamping# Field speedfactor# Field mass# Field bcol Field bouncefactor# Field vectoracceleration# End Type SetBuffer BackBuffer() started = 0 actualtime = 0 physikstarttime = MilliSecs() While Not KeyHit(1) mainx = MouseX() mainy = MouseY() If mainx < mainrad Then mainx = mainrad If mainy < mainrad Then mainy = mainrad If mainx > maxx-mainrad Then mainx = maxx-mainrad If mainy > maxy-mainrad Then mainy = maxy-mainrad physikacttime = MilliSecs() While physikacttime > ( physikstarttime + ( physikupdates * (1000.0/physikfrequency) ) ) physikupdates = physikupdates + 1 ;Physics If MouseHit(1) started = 1 starttime = MilliSecs() EndIf If started actualtime = MilliSecs()-starttime For ball.punchball = Each punchball ballacc# = (mainx-ball\x) * ball\speedfactor ballacc# = ballacc - ( ball\vx * ball\speeddamping ) ball\vx = ball\vx + ballacc# ballacc# = (mainy-ball\y) * ball\speedfactor ballacc# = ballacc - ( ball\vy * ball\speeddamping ) ball\vy = ball\vy + ballacc# For ball2.punchball = Each punchball If ball <> ball2 distancesqr# = ( ball\x - ball2\x ) * ( ball\x - ball2\x ) + ( ball\y - ball2\y ) * ( ball\y - ball2\y ) If distancesqr# < ( ( ball\radius + ball2\radius ) * ( ball\radius + ball2\radius ) ) calcpunch( ball, ball2 ) EndIf EndIf Next Next For ball = Each punchball If ball\y+ball\vy < ball\radius ball\vy = - ball\vy EndIf If ball\x+ball\vx < ball\radius ball\vx = - ball\vx EndIf If ball\x+ball\vx > maxx-ball\radius ball\vx = -ball\vx EndIf If ball\y+ball\vy > maxy-ball\radius ball\vy = -ball\vy EndIf If ball\vectoracceleration <> 0 Then vnorm = Sqr( ball\vx * ball\vx + ball\vy * ball\vy ) ball\vx = ball\vx + ( ball\vx / vnorm ) * ball\vectoracceleration ball\vy = ball\vy + ( ball\vy / vnorm ) * ball\vectoracceleration EndIf ball\y = ball\y + ball\vy ball\x = ball\x + ball\vx Next For ball = Each punchball distancesqr# = ( ball\x - mainx ) * ( ball\x - mainx ) + ( ball\y - mainy ) * ( ball\y - mainy ) If distancesqr# < ( ( ball\radius + mainrad ) * ( ball\radius + mainrad ) ) started = 0 If actualtime > besttime Then besttime = actualtime EndIf Next Else initballs() EndIf Wend ;Rendering Cls() time = parseTime( actualtime ) Color 255,255,255 Text 10,10,time time = parseTime( besttime ) Color 255,255,255 Text 960,10,time For ball = Each punchball drawball( ball\x, ball\y, ball\radius, ball\bcol ) Next drawball( mainx, mainy, mainrad, $FFFFFF ) Flip() Wend Function parsetime$( parsingtime ) Local time$ parsingtime = parsingtime / 100 zehntel = parsingtime Mod 10 parsingtime = parsingtime / 10 secs = parsingtime Mod 60 mins = parsingtime / 60 time = mins + ":" + secs + ":" + zehntel Return time End Function Function drawball( x, y, radius, col ) Local factor# Color 0,0,col red = ColorRed() green = ColorGreen() blue = ColorBlue() lred = ( 255-red ) / 1.5 + red lgreen = ( 255-green ) / 1.5 + green lblue = ( 255-blue ) / 1.5 + blue Oval x-radius, y-radius, radius*2, radius*2 Color lred, lgreen, lblue Oval x-radius/1.5, y-radius/1.5, radius/2, radius/2 End Function Function calcpunch( ball1.punchball, ball2.punchball ) Local i#,x# Local dx#,dy# Local v#,w#,m1#,m2#,g#,f1#,f2#,e# dx= ball1\x-ball2\x dy= ball1\y-ball2\y v= ball2\vx-ball1\vx w= ball2\vy-ball1\vy g= (dx*v+dy*w)/(dx*dx+dy*dy) If g > 0 Then e= 1 ; Bouncingfactor m1= ball1\mass m2= ball2\mass f1= (m2/(m1+m2))*(1+e) f2= -(m1/(m1+m2))*(1+e) ball1\vx=ball1\vx+dx*f1*g ball1\vy=ball1\vy+dy*f1*g ball2\vx=ball2\vx+dx*f2*g ball2\vy=ball2\vy+dy*f2*g EndIf End Function Function initballs( ) Local rndaxis For ball.punchball = Each punchball Delete ball.punchball Next ball.punchball = New punchball ball\x = 400 ball\y = 350 ball\vx = 0 ball\vy = 0 ball\radius = 20 ball\speedfactor = 0.002 ball\speeddamping = 0.03 ball\mass = 1 ball\bouncefactor = 1 ball\bcol = $FF0000 ball.punchball = New punchball ball\x = 600 ball\y = 350 ball\vx = 0 ball\vy = 0 ball\radius = 25 ball\speedfactor = 0.003 ball\speeddamping = 0.03 ball\mass = 1 ball\bouncefactor = 1 ball\bcol = $0000FF ball.punchball = New punchball ball\x = 200 ball\y = 200 ball\vx = 0 ball\vy = 0 ball\radius = 35 ball\speedfactor = 0 ball\vx = 7 ball\vy = 3 ball\speeddamping = 0 ball\mass = 10000 ball\bouncefactor = 1 ball\bcol = $00FF00 ball.punchball = New punchball ball\x = 824 ball\y = 568 ball\vx = 0 ball\vy = 0 ball\radius = 35 ball\speedfactor = 0 ball\vx = -7 ball\vy = -3 ball\speeddamping = 0 ball\mass = 10000 ball\bouncefactor = 1 ball\bcol = $00FF00 If 1 = 2 Then ball.punchball = New punchball ball\x = 512 ball\y = 100 ball\radius = 6 ball\speedfactor = 0.0002 ball\vx = 0 ball\vy = 0 ball\speeddamping = 0.001 ball\mass = 4000 ball\bouncefactor = 1 ball\bcol = $FFFF00 EndIf rndaxis = Rnd(0,360) ball.punchball = New punchball ball\x = 512 ball\y = 612 ball\radius = 6 ball\speedfactor = 0 ball\vx = Sin(rndaxis)*1 ball\vy = Cos(rndaxis)*1 ball\speeddamping = 0 ball\vectoracceleration = 0.01 ball\mass = 10000 ball\bouncefactor = 1 ball\bcol = $FF0000 End Function mfg stf |
||
Denken hilft! |
- Zuletzt bearbeitet von stfighter01 am Sa, Dez 01, 2007 14:16, insgesamt einmal bearbeitet
Noobody |
Sa, Dez 01, 2007 13:24 Antworten mit Zitat |
|
---|---|---|
1 Minute 4 Sekunden... Dann wurde es mir langweilig^^
Ich bin einfach in die untere rechte Ecke gehockt und hab gewartet... |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
Marek |
Sa, Dez 01, 2007 13:28 Antworten mit Zitat |
|
---|---|---|
0:20:1
[Edit] Mit Ball in der rechten unteren Ecke 6:33:8 [/Edit] |
||
Wer lesen kann ist klar im Vorteil... |
- Zuletzt bearbeitet von Marek am Sa, Dez 01, 2007 13:42, insgesamt einmal bearbeitet
ZaP |
Sa, Dez 01, 2007 13:31 Antworten mit Zitat |
|
---|---|---|
1:36:06..
Hab mich auch in die rechte untere Ecke gehockt.. (Ohne die Beiträge vorher zu lesen.) Erstaunlich ist, dass sich scheinbar alle nach unten rechts absetzen. |
||
Starfare: Worklog, Website (download) |
stfighter01 |
Sa, Dez 01, 2007 14:18 Antworten mit Zitat |
|
---|---|---|
oO
Wieder mal blöd getested xD Hab den code modifiziert ( sh. oben ) Das sollte jetzt nicht mehr funktionieren. |
||
Denken hilft! |
scratsch |
Sa, Dez 01, 2007 16:39 Antworten mit Zitat |
|
---|---|---|
cooles game | ||
User posted image I like to play... with you!
http://weenie-games.6x.to |
KddC |
Sa, Dez 01, 2007 19:11 Antworten mit Zitat |
|
---|---|---|
ne...geht nicht mehr...ganz lustig das game...hab 24.7 sekunden geschaft | ||
Mfg Kddc
Macbook Pro 13" 2,66Ghz |
D2006Administrator |
Sa, Dez 01, 2007 19:42 Antworten mit Zitat |
|
---|---|---|
Mach noch Dinge rein, die man einsammeln muss und mit der Zeit wird es immer schwieriger (neue Bälle, wendiger und schneller usw.). | ||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
stfighter01 |
Sa, Dez 01, 2007 19:50 Antworten mit Zitat |
|
---|---|---|
@Kddc.l3usch
Reschpekt, da gehts dann schon ganz schön rund. Kleine erleichterung bietet folgender Hack 5te Zeile von unten ball\vectoracceleration = 0.01 Auf einen Kleineren Wert setzten z.b.: 0.004 @D2006 Ja, ich weiss es ist karg, aber mir gings nur ums Prinzip der Mausfolgenden Bälle (Rot/Blau) Eyecandys o.ä. dürfen die Jungen im Forum einbauen Bin aber froh das es mit wenig aufwand auch ganz lustig geworden ist Mfg stf |
||
Denken hilft! |
Eingeproggt |
Sa, Dez 01, 2007 20:03 Antworten mit Zitat |
|
---|---|---|
17.9
Mit den Mausverfolgenden Bällen würde man ja fertig werden, wenn die anderen nicht wären. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
WEBLink |
Mo, Dez 03, 2007 14:07 Antworten mit Zitat |
|
---|---|---|
was bei 1 min.
Ist relativ einfach wenn man den Mauszeiger im Uhrzeigersinn jeweils zu der nächsten Ecke führt. Aber dennoch ein netten Game |
||
Silver_Knee |
Mo, Dez 03, 2007 15:01 Antworten mit Zitat |
|
---|---|---|
hmm wenn man mal den abstand raushat in dem man sich um die bälle drehen muss damit beide nahezu still stehen kommt man doch relativ weit
0:19:9 |
||
ozzi789 |
Mo, Dez 03, 2007 15:48 Antworten mit Zitat |
|
---|---|---|
0:32:2
Ohne Tricks Kanste nicht IF mousedown weglassen mein Zeigefinger tut weh |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
stfighter01 |
Mo, Dez 03, 2007 18:59 Antworten mit Zitat |
|
---|---|---|
@WEBLink
1Min oO aber mit dem Hack oder? @ozzi789 xD mousedown gibts nicht, nur ein klick am anfang zum starten reicht [edit] aber Respekt über 30 sek ist gewaltig[/edit] |
||
Denken hilft! |
Übersicht Sonstiges Projekte
Powered by phpBB © 2001 - 2006, phpBB Group