(07-29-2023, 07:07 PM)mnrvovrfc Wrote: The game you apparently didn't like was the one my friend failed to translate to micro(A).
It's simply because it needs more LOC to give the illusion of animation. Such as pressing [9] key, the ship moves down the lane and the player sees all nine steps of it. Put a starry background and make it move as part of the illusion.
But it was meant to be a simple game. Not for some slob to steal it without making any modification to it except the "original author" comment at the top.
This was sort of based on another game which was about cars instead. Not really a race. But the "aliens" were drunk drivers determined to crash into the player's car. The player's car could move vertically in that other game but not very far ahead, it was sort of like the ship in Centipede. Also this was more or less like "Demolition Derby", my favorite Tandy Color Computer cartridge.
If you are talking to me, I didn't like it because it didn't work. The digit keys didn't respond nor the shift keys???
And my code started from scratch trying to figure out what roquedrivel was trying to accomplish. So nobody let alone slobs was stealing noth'n.
Check it out, I was just guessing at how it might have worked:
Code: (Select All)
_Title "roquedrivel Game" ' b+ 2023-07-28
DefLng A-Z ' make all variables long
Width 40
debug = 0 ' this is for checking things along the way
rightBoundary = 10
playerX = 5: playerY = 25: player$ = "A"
gateX = Rand(10): gateY = 25 - Rand(13): gate$ = "X" ' not installed yet
Dim As Long badX(1 To 4), badY(1 To 4) ' baddies locates
bad$ = "V"
GoSub ReassignBaddies
'If debug Then Sleep 'check progress
Do
Cls ' then display current status
For i = 1 To 25
Locate i, 11: Print Chr$(179);
Next
Locate 12, 15: Print "Score:"; score
For i = 1 To 4 ' draw baddies then move them unless a collision with player
If playerX = badX(i) And playerY = badY(i) Then
player$ = "*": score = score - 1
Locate playerY, playerX: Print player$
Sound 600, 4
Else
Locate badY(i), badX(i): Print bad$;
End If
If Rand(60) < 5 Then badY(i) = badY(i) + 1
If badY(i) > 25 Then
restart2:
r = Rand&(10)
For j = 1 To 4 ' find a new lane
If j <> i Then
If badX(j) = r Then GoTo restart2 ' find another lane this one is used
End If
Next
badX(i) = r: badY(i) = 1 ' give the bad(i) a new start
End If
Next
Locate playerY, playerX: Print player$; ' wait for player to do something
If player$ = "*" Then
playerY = 25: player$ = "A"
GoSub ReassignBaddies
ElseIf playerY = 1 Then
GoSub ReassignBaddies
score = score + 1
playerY = 25
Else
kh = _KeyHit
If kh >= 48 And kh <= 57 Then ' digits 1 to 9, 0 = 10
move = kh - 48
If move = 0 Then move = 10
If (playerY - move) < 1 Then Beep: GoTo skip
For i = 1 To move
For b = 1 To 4
If playerY - i = badY(b) And playerX = badX(b) Then Beep: GoTo skip
Next
Next
playerY = playerY - move
skip:
ElseIf kh = 19200 Then ' left arrow
If playerX - 1 < 1 Then Beep Else playerX = playerX - 1
ElseIf kh = 19712 Then ' right arrow
If playerX + 1 > rightBoundary Then Beep Else playerX = playerX + 1
ElseIf kh = 27 Then
End
End If
End If
_Limit 30 ' loop 30 times a sec 2 secs = 60 frames
Loop
End
ReassignBaddies:
badX(1) = Rand&(10): badY(1) = 1
For i = 2 To 4 ' assign a lane
restart:
r = Rand&(10)
For j = 1 To i - 1
If badX(j) = r Then GoTo restart ' find another lane this one is used
Next
badX(i) = r: badY(i) = 1 ' give the baddies a place
If debug Then Print i; badX(i); badY(i) ' check progress
Next
Return
Function Rand& (maxnum As Long) ' 1 to maxnum inclusive
Rand& = Int(Rnd * maxnum + 1)
End Function
After I posted, I learn the ship was supposed to stay at bottom of screen, yikes!
b = b + ...