Shoot Em Up - Video

Previous topic - Next topic

Antidote

PC Core2Duo e4300, 2GBRam, Geforce 8800GT-1gb, XPsp3
GP2x, Wii, XBox360, Wiz, psp, ps3 usw.

Kitty Hello

Global beginnt mit g_ (bei mir)
und Inhlate von TYPE mit m_ (member)

HeikoJ

Hallo,

eigentlich ist es doch egal wie mann die Variablen/Konstanten definiert. Jeder sollte
da seinen eigen Stil finden und ihn dann auch konsequent umsetzen.

Man sollt aber meiner Meining nach solche Def. wie bei Antidote sein lassen.
Wer weiß hinterher schon was "SHOT" oder "shot" war. Das führt zu argen
Verwirrungen.

Des wegen war ja mein Vorschlage schon mal, die Klein/Großschreibung komplett
zu ignorieren und beides als dieselben Definition zu interpretieren.

Gruß Heiko

Schranz0r

Wie in "normalen" Basicdialekten auch ;) Ne spass :D
Im prinzip ist es echt egal, ist ja jeden sein Bier...
Nur bei Tutorials wirds dann halt kritisch :S

Aber naja, ich werds mir mal so angewöhnen:

Constante: c_Alter
Globale : g_Levelnummer
Locale: l_time
Type : ergibt sich ja durch das LOCAL/GLOBAL Var AS Type

In der FOREACH-Schleife mach ich es immer so

FOREACH C IN Type[]

Das C steht für Check :D
Ist halt schon so drin bei mir ;)
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Shogun

Hallo Gernot,

das Video ist wirklich interessant. Da kann man schon einiges draus lernen. Ob du den Code ins Forum posten kannst? Ich habe keinen Drucker, muss also das Video ständig pausieren und die Parameter abschreiben.
Würde mich freuen.

Kitty Hello

Code (glbasic) Select
// --------------------------------- //
// Project: Blaster
// Start: Thursday, April 05, 2007
// IDE Version: 4.145

// A SHOT type. It's just the position in this sample
// Ein Schuss-TYPE. Hier ist nur die Position von Bedeutung
TYPE SHOT
x
y
ENDTYPE

TYPE FOE
x
y
speed=3
amour=4
ENDTYPE

TYPE BOOM
x
y
time
ENDTYPE


// a SHOT for adding new ones later
// ein SHOT um später neue hinzuzufügen
LOCAL newshot AS SHOT
LOCAL newbug  AS FOE

// The SHOTs array. Here the shots get inserted
// das SHOTs Feld. Hier kommen die Schüsse rein
LOCAL shots[] AS SHOT
LOCAL bugs[] AS FOE
LOCAL poof[] AS BOOM




LOADSPRITE "ship.png", 0
LOADSPRITE "shot.png", 1
LOADSPRITE "bug.png",  2
LOADSPRITE "boom.png", 3






playerx = 320
WHILE TRUE
// Player Movement
// Spieler Bewegung
INC playerx, MOUSEAXIS(0)
// Limit to borders
// Auf den Rand begrenzen
playerx=MAX(MIN(playerx,600),40)

// Space bar and some time since last shot?
// Leertaste und etwas Zeit seit letztem Schuss vergangen?
IF MOUSEAXIS(3) AND delay // Prepare a shot
// Schuss vorbereiten
newshot.x = playerx
newshot.y = 400
// And stuff into the array
// Und in's Feld reinpacken
DIMPUSH shots[], newshot
// Get a time when the next shot can be fired
// Zeit festlegen, wann der nächste Schuss geladen ist
delay = GETTIMERALL() + 100
ENDIF


time = GETTIMERALL()
IF time>nextbug
nextbug = time + 500
DIMPUSH bugs[], newbug
ENDIF

FOREACH bug IN bugs[]
INC bug.x, bug.speed
IF bug.x<0 OR bug.x>620
INC bug.y, 32
bug.speed = -bug.speed
ENDIF
didhit=FALSE
FOREACH pop IN shots[]
IF BOXCOLL(pop.x, pop.y, 8,8, bug.x, bug.y, 32,32)
didhit=TRUE
DELETE pop
ENDIF
NEXT
IF didhit
LOCAL p AS BOOM
p.x = bug.x
p.y = bug.y
p.time = time
DIMPUSH poof[], p
DELETE bug
ENDIF
DRAWSPRITE 2, bug.x, bug.y
NEXT


FOREACH p IN poof[]
LOCAL pos = (time - p.time) / 1000
IF pos > 1 THEN DELETE p
ALPHAMODE 1-pos
ROTOZOOMSPRITE 3, p.x, p.y, pos*1000, 1+pos*3
NEXT
ALPHAMODE 0



// Loop through all shots
// Durch alle Schüsse laufen
FOREACH pop IN shots[]
// Move shot up
// Schuss hoch bewegen
DEC pop.y, 5
// If shot reaches upper screen, remove it and continue
// Wenn Schuss am oberen Rand, dann entfernen und continue
IF pop.y<0 THEN DELETE pop

// Draw the shot
// Schuss zeichnen
DRAWSPRITE 1, pop.x, pop.y
NEXT

// Draw "player"
// "Spieler" zeichnen
DRAWSPRITE 0, playerx, 400

SHOWSCREEN
WEND
Ich hoff' dass das der richtige ist...

trucidare

also ich glaub ich bin der einzige der sowas wie sub gar nich benutzt kann das sein?
naja ich mach meine variablen und co je nachdem in welcher funktion ich mich befinde. so sehen meine vars in der menu funktion so aus: Menu_Items[3], Menu_Auswahl, Menu_Selektiert, Menu_Counter etc pp
MacBook Pro 2,2 GHz Core 2 Duo, 4 GB RAM, 160 GB HDD, 8600M GT
Core i3 - 3,07 GHz, 8 GB Ram, 2.5 TB HDD, Geforce GTX 260+ OC

Kitty Hello

Jo. Statt Menun_xxx kann man auch:
TYPE TMenu
   Items[3]
   Auswahl
   Selektiert
ENDTYPE
GLOBAL Menu AS TMenu

trucidare

ach das wär ja übersichtlich ;)
ich programmier so weiter wie bisher :P
MacBook Pro 2,2 GHz Core 2 Duo, 4 GB RAM, 160 GB HDD, 8600M GT
Core i3 - 3,07 GHz, 8 GB Ram, 2.5 TB HDD, Geforce GTX 260+ OC

Shogun

Der Code scheint der richtige zu sein. Nur läuft das Programm nicht. Liegt das daran, dass ich nur die Demo-Version habe?

BumbleBee

Was geht nicht? Wenn du nur ein schwarzes Fenster siehst fehlt die Grafik. Die muß natürlich da sein. Also bei mir läufts. Ob Demo oder nicht. :)

Cheers
The day will come...

CPU Intel(R) Core(TM) i5-3570k, 3.4GHz, AMD Radeon 7800 , 8 GB RAM, Windows 10 Home 64Bit

Schranz0r

jow dir fehlen wohl die Grafiken ;)
Sollte normal schon laufen, wenn Gernot das hier reinpostet!
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Kitty Hello

hast Du die Bilder (.png) im Ordner?

Shogun

Hat jemand Lust es mal zu testen? Der Compiler läuft bei mir ohne Probleme durch. Nur ich sehe nichts außer dem Wasserzeichen.

Schranz0r

Lads auf Z-Share!
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard