Freund und Feind in ein Type?
Übersicht

RetroBetreff: Freund und Feind in ein Type? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Angenommen aus 4 Richtungen kommen Gegner/Freunde auf die Spielfigur zu... macht es Sinn, die alle in ein Type zu setzen?
Zumal zu jeder Zeit aus jeder Richtung auch immer nur wahlweise ein Freund/Feind kommen darf... |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
sehe nix, was dagegen spricht - mach noch eine kennung rein und fertig... | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
theBlade |
![]() Antworten mit Zitat ![]() |
---|---|---|
scheiss egal, kannst auch 2 machen, juckt im prinzip niemanden... bei einem ist es aber etwas übersichtlicher | ||
"Ich bin wie ich bin. Die einen kennen mich, die anderen können mich." (Dr. Konrad Adenauer)
UTFSB -> (use the fuckin "suchen"-button) User posted image <- link -.- |
Retro |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@TheShadow: Meinst Du die Art des Gegners? Freund/Feind?
Type Gegner Field Gegnerart, X, Y, Startrichtung, Richtung, Geschwindigkeit End Type Da müßte man noch zusätzlich ein Feld reinmachen, wenn es verschiedene Feinde/Freunde gibt. Und wie würdet ihr die Startrichtung (links, oben, rechts, unten) auch so angeben? Wie verwaltet man das am Sinnvollsten, daß aus jeder Richtung immer nur ein Feind/Freund kommen kann? DIM? |
||
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hoi! Habs mal so in etwa versucht! Geht doch super.
Code: [AUSKLAPPEN] Graphics 640,480 SetBuffer BackBuffer() SeedRnd MilliSecs() Type Gegner Field Gegnerart, X, Y, Startrichtung, Richtung, Geschwindigkeit End Type gegner_feind() Repeat Cls For g.gegner = Each gegner If g\gegnerart = 1 Rect g\x,g\y,20,20 ElseIf g\gegnerart = 2 Oval g\x,g\y,20,20 EndIf If g\richtung = 1 g\y = g\y + g\geschwindigkeit ElseIf g\richtung = 2 g\y = g\y - g\geschwindigkeit ElseIf g\richtung = 3 g\x = g\x + g\geschwindigkeit ElseIf g\richtung = 4 g\x = g\x - g\geschwindigkeit EndIf If g\y < - 10 Or g\y > 490 Or g\x < - 10 Or g\x > 650 Delete g.gegner gegner_feind() Exit EndIf Next Flip Until KeyHit(1):End Function gegner_feind() g.gegner = New gegner g\gegnerart = Rand(1,2) ;1: Freund - 2: Feind g\richtung = Rand(1,4) ; 1: von oben - 2: von unten - 3: von links - 4: von rechts If g\richtung = 1 g\x = 400 g\y = 0 ElseIf g\richtung = 2 g\x = 400 g\y = 480 ElseIf g\richtung = 3 g\x = 0 g\y = 300 ElseIf g\richtung = 4 g\x = 640 g\y = 300 EndIf g\geschwindigkeit = Rand(10,20) End Function Code wurde schnell geschrieben, also net meckern. |
||
~ Hey Ho Let's Go ~ |
c64 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn eine Objectgruppe zb. Gruppe : " Bewegliche Objecte "
20 gleiche Attribute hat und nur 1 Attribut zur genaueren Definition eines Objectes (zb. Feind , Freund , o.ä.) dient dann schreibt doch kein vernünftiger Programmierer eine neue Structur für dieses . Es sei denn bestimmte umstände erfordern dies . Ich denke du hast es so wie du es jetzt handhabst am Optimalsten. mfg : Pr.Dr. C64 ![]() |
||
Retro |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Funzt prima! Ich verstehe bloß nicht, warum René im Buch das Thema als kompliziert beschreibt - ich find das eher einfacher als mit Dim zu arbeiten. Types sind ja regelrecht "geil" wenn man es so nimmt *g* | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bis an den Punkt ist alles noch einfach wo du es nicht wirklich benutzt.
Wir werden sehen inwiefern sie wirklich verstanden worden sind. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, ich hoffe du nutzt den Code auch nicht nach dem Copy'n'Paste Schema. Guck ihn dir an, lösch ihn und versuche das selbst nochmal zu machen, sonst bringt es dir nichts. | ||
~ Hey Ho Let's Go ~ |
Retro |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Der Code ist ja nur ein grobes Gerüst, was ich vorhabe, ist bischen mehr. Und nein ich werde es nicht bloß nutzen ohne zu wissen was da genau abgeht. Aber Types scheinen nicht sooo schwer zu sein, habe die schon oft in Spielen gesehen und irgendwie die Logik auch gleich verstanden. | ||
Flip |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Blitzkrieg Bop: Lerne mich auch gerade in Types ein, aber wie erweitert man z.B. Dein obiges Beispiel so, daß die Gegner auch gleichzeitig und nicht immer nacheinander erscheinen? | ||
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Na, das ist kein Problem. Um die Frage zu lösen, guck dir an, wie die Gegner erstellt werden: Immer wenn der vorige Gegner über den Rand weg ist und gelöscht wurde ![]() Wenn du dich fragst, wie dann der aller erste entstanden ist, guck dir vor Repeat an, das ich bereits einmal gegner_feind() genutzt habe. Es gibt mehrere Sachen, das nun zu ändern. Beispiel: Code: [AUSKLAPPEN] Graphics 640,480 SetBuffer BackBuffer() SeedRnd MilliSecs() Type Gegner Field Gegnerart, X, Y, Startrichtung, Richtung, Geschwindigkeit End Type For i = 1 To 5 gegner_feind() Next Repeat Cls For g.gegner = Each gegner If g\gegnerart = 1 Rect g\x,g\y,20,20 ElseIf g\gegnerart = 2 Oval g\x,g\y,20,20 EndIf If g\richtung = 1 g\y = g\y + g\geschwindigkeit ElseIf g\richtung = 2 g\y = g\y - g\geschwindigkeit ElseIf g\richtung = 3 g\x = g\x + g\geschwindigkeit ElseIf g\richtung = 4 g\x = g\x - g\geschwindigkeit EndIf If g\y < - 10 Or g\y > 490 Or g\x < - 10 Or g\x > 650 Delete g.gegner gegner_feind() Exit EndIf If KeyHit(28) gegner_feind() EndIf Next Flip Until KeyHit(1):End Function gegner_feind() g.gegner = New gegner g\gegnerart = Rand(1,2) ;1: Freund - 2: Feind g\richtung = Rand(1,4) ; 1: von oben - 2: von unten - 3: von links - 4: von rechts If g\richtung = 1 g\x = 400 g\y = 0 ElseIf g\richtung = 2 g\x = 400 g\y = 480 ElseIf g\richtung = 3 g\x = 0 g\y = 300 ElseIf g\richtung = 4 g\x = 640 g\y = 300 EndIf g\geschwindigkeit = Rand(10,20) End Function Nun werden gleich am Anfang nicht nur 1 Objekt, sondern 5 erstellt und wenn man Enter drückt, wird ebenfalls ein neues erstellt. So, wenn du den Code nun verstanden hast, solltest du sowas auch locker alleine schaffen. Bei Fragen, einfach melden. Von mir aus auch per PN. 8) Ich helfe ja gerne. |
||
~ Hey Ho Let's Go ~ |
Flip |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ups, meinte eigentlich das gleichzeitig von mehreren Seiten Gegner kommen, aber nicht von einer Seite mehrere.
Müßte man da einfach 4 zusätzliche Variablen anlegen und diese immer abfragen? |
||
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also, im mom läuft alles über das Zufallsprinzip.
Setz dich ran und du schaffst es, da bin ich sicher ![]() Du musst halt nur z.B sagen: If modus = 1 figur von links elseif modus = 2 fifur von rechts endif oder so ähnlich. |
||
~ Hey Ho Let's Go ~ |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group