Ich möchte mein erstes Amstrad GX4000-Spiel teilen, Ronald In The Maze:
RolandMazeGX4000.zip (467.8 KB)
Getestet auf Arnold und Retro Virtual Machine.
Dabzy
Ich möchte mein erstes Amstrad GX4000-Spiel teilen, Ronald In The Maze:
RolandMazeGX4000.zip (467.8 KB)
Getestet auf Arnold und Retro Virtual Machine.
Dabzy
Ouuuh ja, danke
Schön! haha, ich mag die Hintergrundgeschichte
Womit hast du es gemacht?
Lol, die Hintergrundstory… Ja, ich musste die [manchmal] schrecklichen Spielhandlungen der damaligen Zeit einfach am Leben erhalten! ![]()
Na ja, ich habe es mit meinen eigenen Tools gemacht, im Moment noch unvollendet, aber ich nenne es Ronald4000. Es ist ein BASIC->ASM-Compiler, der RASM nutzt, um das finale Cartridge zu erstellen…
Als Beispiel ist hier ein kleines Invaders-Spiel darin:
' INVADERS - ein einfaches kleines Space Invaders für den GX4000
' Geschrieben in Ronald BASIC
' Sprites (Hardware, null Flackern):
' Slots 0..11 - die Invader-Formation (4 x 3)
' Slot 12 - die Kanone des Spielers
' Slot 13 - das Geschoss des Spielers
' Bilder (Software, einmal gezeichnet):
' "bunker" - drei Schutzblöcke am unteren Rand
'
' Steuerung: LINKS/RECHTS bewegen, FIRE schießen.
' Lösche die Welle, um zu gewinnen; wenn sie dich erreichen, heißt es Game Over.
' FIRE spielt nochmal.
Mode 1
Ink 0, 0 ' schwarz
Ink 1, 18 ' hellgrün (Text + Bunker)
Ink 2, 6 ' rot
Ink 3, 26 ' weiß
Border 0
Dim alive:Byte[12]
' Sprite-Muster einmal einbrennen + laden (alle 12 Invader teilen sich ein Muster)
For i = 0 To 11
LoadSprite "invader", i
Next
LoadSprite "player", 12
LoadSprite "bullet", 13
' äußere Schleife - ein Durchlauf = ein Spiel, dann Neustart bei FIRE
Repeat
' ---- Status zurücksetzen ----
For i = 0 To 11
alive[i] = 1
Next
remaining = 12
score = 0
marchX = 0
marchY = 0
dir = 1 ' 1 = marschiert nach rechts, 0 = marschiert nach links
tick = 0
bAlive = 0
px = 148
py = 176
gameover = 0
won = 0
Cls
' Schilde - Software-Bilder, einmal gezeichnet; die Sprites gleiten darüber
DrawImage "bunker", 40, 150
DrawImage "bunker", 148, 150
DrawImage "bunker", 256, 150
Locate 1, 1
Print "SCORE ", score, " "
' Formation und Kanone platzieren
For i = 0 To 11
row = i / 4
col = i - row * 4
Sprite i, 30 + col * 28 + marchX, 24 + row * 22 + marchY
Next
Sprite 12, px, py
' Haupt-Spielschleife
Repeat
Wait
' ---- Kanone bewegen ----
If JoyLeft Then px = px - 3
If JoyRight Then px = px + 3
If px < 4 Then px = 4
If px > 292 Then px = 292
Sprite 12, px, py
' ---- schießen (immer nur ein Schuss gleichzeitig) ----
If FireHit And bAlive = 0 Then
bAlive = 1
bx = px
by = py - 8
EndIf
' ---- Geschoss aktualisieren ----
If bAlive = 1 Then
by = by - 6
If by <= 10 Then
bAlive = 0
SpriteHide 13
Else
Sprite 13, bx, by
' hat es einen Invader getroffen?
For i = 0 To 11
If alive[i] = 1 Then
If SpritePixelHit(13, i) Then
alive[i] = 0
SpriteHide i
bAlive = 0
SpriteHide 13
score = score + 10
remaining = remaining - 1
Locate 1, 1
Print "SCORE ", score, " "
Exit
EndIf
EndIf
Next
EndIf
EndIf
' ---- Formation nach Timer marschieren lassen (wird schneller, je weniger übrig sind) ----
tick = tick + 1
spd = 3 + remaining
If tick >= spd Then
tick = 0
If dir = 1 Then
marchX = marchX + 8
If marchX >= 176 Then
marchX = 176
dir = 0
marchY = marchY + 12
EndIf
Else
If marchX <= 8 Then
marchX = 0
dir = 1
marchY = marchY + 12
Else
marchX = marchX - 8
EndIf
EndIf
' lebende Invader neu positionieren
For i = 0 To 11
If alive[i] = 1 Then
row = i / 4
col = i - row * 4
Sprite i, 30 + col * 28 + marchX, 24 + row * 22 + marchY
EndIf
Next
' haben sie die Kanonenlinie erreicht?
If marchY >= 92 Then gameover = 1
EndIf
' ---- Welle geklärt? ----
If remaining = 0 Then
won = 1
gameover = 1
EndIf
Until gameover = 1
' Runde vorbei - Feld räumen, Ergebnis anzeigen
For i = 0 To 11
SpriteHide i
Next
SpriteHide 12
SpriteHide 13
Locate 16, 12
If won = 1 Then Print "YOU WIN!"
If won = 0 Then Print "GAME OVER"
Locate 12, 14
Print "FIRE TO PLAY AGAIN"
' auf erneuten FIRE-Druck warten
Repeat
Wait
Until FireHit
Until 0
Und ein Screenshot der IDE, die Autovervollständigung hat, was hier aber nicht zu sehen ist:
Sie hat eingebaute Sprite- und Tilemap-Editoren, die links zugänglich sind.
Das Tool ist noch unvollendet, ich muss noch einiges daran tun… Es ist so eine Art Nebenprojekt zu meinem Hauptprojekt – das ist, um nicht spammig zu wirken, eine BASIC-Sprache namens BambooBasic (www.bamboobasic.org). Ich habe vieles davon übernommen und in Ronald4000 implementiert!
Es gibt noch kein offizielles Datum, wann es fertig sein wird, weil Bamboo viel von meiner Zeit in Anspruch nimmt, aber es wird fertig werden!
Wie auch immer, danke fürs Reinschauen! ![]()
Dabzy
Hey, danke fürs Teilen! Sieht aus wie ein Spiel, das von Pac-Man inspiriert ist?
Ich kann es leider nicht spielen (in cpcec). Es lädt und zeigt die Animation „press fire to play“, aber weiter komme ich nicht.
Wenn ich cpcec mit der Firmware-Cartridge starte, sehe ich, dass ich den Joystick richtig aktiviert habe: Die Pfeiltasten zeigen Pfeile an und X und Z zeigen Großbuchstaben X und Z. Auch Burnin’ Rubber akzeptiert Button 1 und 2.
Aber „Ronald in the maze“ bleibt im selben Emulations-Setup bei der Animation „press fire to play“ hängen.
Was die Tatsache angeht, dass es anscheinend nur mit Joystick spielbar ist: Dürfte ich vorschlagen, Tastatursteuerung zu unterstützen?
Falls du nicht in eine Funktion zum Neubelegen von Tasten investieren möchtest, ziehst du es vielleicht vor, es so zu machen wie ich in Just Get 9: Definiere einfach mehrere Tasten für jede Aktion, damit die Spieler unabhängig von ihren Gewohnheiten schnell eine Belegung finden, die einfach funktioniert.
Details dazu unter "Any-setup keys": so every player can play your game, whatever their CPC or emulator - General - CPCWiki.