Wie kann man PowerUps machen?
Übersicht

![]() |
Lord AdZBetreff: Wie kann man PowerUps machen? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mein Ping-Pong-Spiel ist schon fast fertig, es fehlen nur noch die PowerUps, z. B. Schlägervergrößerung/verkleinerung, schnellere/langsamere Kugel, Schutzschild, usw...
Das Problem besteht darin, dass ich zwar Ideen habe, sie aber noch nicht zusammensetzen, btw. in einen Code umsetzen kann. Meine Ideen: 1. Mit "Rnd" bestimme ich, wann ein PowerUp ins Spiel kommt. 2. Desto höher der Computer führt, desto höher ist die Warscheinlichkeit, dass der Spieler ein "positives" PowerUp bekommt. Außerdem steigen die Chancen, das der Computer ein "negatives" PowerUp bekommt. 3. Manche PowerUps haben sofort Wirkung, andere fallen runter und man muss sie erst aufsammeln. 4. Je nachdem wie gut der Spieler ist, fallen die PowerUps schneller/langsamer runter. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du hast da ja eigentlich schon alles was du brauchst.
Was du dir jetzt halt überlegen musst, ist wie sich das sinnvoll in dein Spielegerüst einbauen lässt. Prinzipiell Mal sicher Powerup = Type, damit du ihr herunterfallen etc in einer Loop machen kannst. Was im Type drin stehen muss mindestens ist auch klar. Position, Poweruptyp, Geschwindigkeit Der Rest ist nur eine Sache dessen wie du beurteilst wie gut der Computer und der Spieler sind. Da kann dir jemand von aussen wenig helfen, da das an deinem Code und deinen Überlegungen zu "was ist gut, was isch schlecht" liegt, welche du dir ja vermutlich vorher schon gemacht hast. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: 1. Mit "Rnd" bestimme ich, wann ein PowerUp ins Spiel kommt.
besser mit ql:rand Zitat: 2. Desto höher der Computer führt, desto höher ist die Warscheinlichkeit, dass der Spieler ein "positives" PowerUp bekommt.
Du könntest die Punkte des Computers durch die Spielerpunkte teilen. Dann bekommst du das Verhältnis heraus (also wievielmal der Computer besser ist als der Spieler) |
||
![]() |
Lord AdZ |
![]() Antworten mit Zitat ![]() |
---|---|---|
Christoph hat Folgendes geschrieben: besser mit <a href="http://www.blitzbase.de/befehle2d/rand.htm" class="postlink" target="_blank">Rand<img src="/images/quicklink.gif" width="13" height="11" alt="" title="Begriff nachschlagen" border="0"></a>
Zwischen "Rnd" und "Rand" gibts doch nur den Unterschied, das "Rnd" mit Floats arbeitet und "Rand" mit Ganzzahlen. Deshalb hab ich "Rnd" genommen, das ist halt genauer. |
||
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann überlege dir mal genau, warum das
Code: [AUSKLAPPEN] Rand(0,5)=1
eine höhere Wahrscheinlichkeit hat als das: Code: [AUSKLAPPEN] Rnd(0,5)=1
|
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die höhere Genauigkeit bringt dir nichts.
Ein Objekt kann nur auf Pixel 4,4 oder 5,4 sein, nicht auf 4.84753349,4 ![]() Drum macht float in 2D keinen sinn |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Lord AdZ |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dreamora hat Folgendes geschrieben: Die höhere Genauigkeit bringt dir nichts.
Ein Objekt kann nur auf Pixel 4,4 oder 5,4 sein, nicht auf 4.84753349,4 ![]() Drum macht float in 2D keinen sinn Ok, dann mach ich das halt mit "Rand". Kann mir hier mal jemand ein Schaubild oder Beispielcode geben, damit ich wenigstens ungefähr weiß, wie ich die PowerUps machen kann. Ich hab nämlich keinen genauen Plan, wie der Code aussehen muss, btw wo die einzelnen Codeteile hinmüssen. |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
PI*Daumen-Code: [AUSKLAPPEN] ;oben
Type powerup Field x,y,fallspeed,typ end type ;fdsfsdffdsfsdfdfsfsdf-CODE-sdfsdfsfojljkljioerfewhjbasdk Repeat ;fdsfjifsdCODE if Rand(0,255-(gegnerpunkte/meinepunkte)*10)=0;je größer die gegnerpunkte im verhältnis zu deinen eigenen sind desto größer wird die warscheinlichkeit. Die zahlen musst du auf dein Spiel bstimmen p.powerup=new powerup p\x=... p\y=... ;usw endif ;CODEEEEEE for p=each powerup drawimage poeripimagearry(p\typ,p\x,p\y);zb p\y=p\y+p\fallgesch ;Hier noch ein if player kollidiert mit powerup und ein gegner-powerup-kollisions-if usw ;und etwas was das powerup daran hindert durch den bden zu fallen... next until keyhit(1) ;.............. |
||
![]() |
Lord AdZ |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry FTC, aber ich kapier deinen Code nicht wirklich. Gehts etwas genauer? | ||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lord Adz:
Du weist genau, was du machen willst und hast (wahrscheinlich) auch das know-how, es als Code umzusetzen. Also wo liegt dein Problem? |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
also irgendwo im programm musst du einen type definieren das sähe so aus
Code: [AUSKLAPPEN] Type powerup
Field x,y,fallspeed,typ,usw end type dann musst du in der hauptschleife eine rutine schreiben die per zufall ein powerup erstllt oder eben nicht Code: [AUSKLAPPEN] if Rand(0,255)=0
wo das erstellt wird bleibt dir überlassen und wie schnell es fällt wolltest du auch noch näher bestimmen...
p.powerup=new powerup p\x=... p\y=... ;usw endif dazu käme jetzt noch das abfragen jedes powerups Code: [AUSKLAPPEN] for p=each powerup
Da wo das X steht müssten dan kollisions-abfraagen hin mindesstens eine für den boden dass es nicht durchfällt und eine für die spieler dass man das powerup auch bekommt bzw der gegner, wenn er schneller ist.
drawimage poeripimagearry(p\typ,p\x,p\y);zb p\y=p\y+p\fallgesch ;X next |
||
![]() |
Lord AdZ |
![]() Antworten mit Zitat ![]() |
---|---|---|
FTC hat Folgendes geschrieben: also irgendwo im programm musst du einen type definieren das sähe so aus
Code: [AUSKLAPPEN] Type powerup
Field x,y,fallspeed,typ,usw end type dann musst du in der hauptschleife eine rutine schreiben die per zufall ein powerup erstllt oder eben nicht Code: [AUSKLAPPEN] if Rand(0,255)=0
wo das erstellt wird bleibt dir überlassen und wie schnell es fällt wolltest du auch noch näher bestimmen...
p.powerup=new powerup p\x=... p\y=... ;usw endif dazu käme jetzt noch das abfragen jedes powerups Code: [AUSKLAPPEN] for p=each powerup
Da wo das X steht müssten dan kollisions-abfraagen hin mindesstens eine für den boden dass es nicht durchfällt und eine für die spieler dass man das powerup auch bekommt bzw der gegner, wenn er schneller ist.drawimage poeripimagearry(p\typ,p\x,p\y);zb p\y=p\y+p\fallgesch ;X next OK, ich glaube, ich habs zumindest teilweise verstanden. Aber jetzt habe ich folgende Probleme: 1. Das PowerUp erscheint nicht 2. Wie mache ich die Schwerkraft für das PowerUp 3. Ich glaube, PowerUps coden ist noch ein bisschen zu schwer für mich ![]() Hier noch mein unausgereifter und bestimmt fehlerhafter Code: Code: [AUSKLAPPEN] If Rand(0,10)=0 p.PowerUp=New PowerUp Positionx=xsp2 Positiony=ysp2 Geschwindigkeit=10 ;usw EndIf For p.PowerUp=Each PowerUp DrawImage PowerUpBild,xpu,ypu Fallgeschwindigkeit=fehlersp2/fehlersp1 If ImagesCollide(spieler1,xsp1,ysp1,0,PowerUpBild,xpu,ypu,0) Then FreeImage PowerUpBild;Kollision Next |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Fast richtig^^versuchs mal damit
Zitat: If Rand(0,10)=0 p.PowerUp=New PowerUp p\Positionx=rnd(100) p\Positiony=rnd(100) p\Geschwindigkeit=10 ;usw EndIf For p.PowerUp=Each PowerUp DrawImage PowerUpBild,p\Positionx,p\Positiony If ImagesCollide(spieler1,xsp1,ysp1,0,PowerUpBild,p\Positionx,p\Positiony,0) Then FreeImage PowerUpBild;Kollision Next |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
Lord AdZ |
![]() Antworten mit Zitat ![]() |
---|---|---|
sorry, das ich so lange nicht geantwortet hab, aber mein Monitor ist kaputtgegangen und bis der neue da war und auch funktioniert hat, ist halt etwas Zeit vergangen ![]() Also zurück zum Problem: @ Tankbuster: 1. Wieso immer p\ ? 2. Egal was ich mache, es will nicht funktionieren! ![]() |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Tankbuster: 1. Wieso immer p\ ?
Weil man das mit Types so macht ![]() Zitat: p.PowerUp=New PowerUp
p\Positionx=rnd(100) Das p beim erstellen des Types, ist das, was vor das "\" kommt! man könnte auch Zitat: hihi.PowerUp=New PowerUp
hihi\Positionx=rnd(100) schreiben! aber P ist halt übersichtlicher! |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
Lord AdZ |
![]() Antworten mit Zitat ![]() |
---|---|---|
OK, Danke. Ich glaub ich habs bald, aber nicht wundern, wenn jetzt ein paar Tage keine Antwort kommt, ich hab im Moment einen Haufen Arbeiten in der Schule ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group