Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Tiny Space Invaders
#16
@dbox Yeah, I mentioned I recalled _NewImage could be used in a previous post, but I'd have to look up how again. Thanks for saving me the trouble!

Now not for me, but if you are interested in using this code to further your QBJS project, I think this counter code might help. What I noticed is the rows don't always stay lined up, but even when the do the explosion sounds in QBJS did not coincide with the removal of the ship that was hit. So I put a counter for the sounds that indicate hits, along with a counter of the number of ships in the cumulative arrays. I put the display on top, and 40 should always be the last number if it's working correctly. Run it in QB64 and you will see that is true, but it's way off in QBJS, which indicates to me there is more going on with the MID$() incompatibility.

Here is the modified code. I didn't want to save it to your server, to avoid any confusion.

Code: (Select All)
_Title "Pete's Mini Space Invaders For QBJS"
Screen _NewImage(40, 20, 0)
Dim _Width, _Height: _Width = 40: _Height = 20 'QBJS trickery to redefine _Width and _Height as variables ' REMARK OUT THIS LINE IF RUNNING IN QB64.
bit = 1: TopRow = 5: s$ = "A A A A A A A A": For i = 0 To 4: a$(i) = s$: Next
trail = _Width \ 2 - Len(a$) \ 2: lag = .35: xbase = _Width \ 2: RowHeight = 5: terminate = _Height - 1
Do
    ' Added Counter----------------------------------------------------------
    count = 0
    For i = 0 To 4
        For j = 1 To 8
            If Mid$(a$(i), j * 2 - 1, 1) = "A" Then count = count + 1
        Next
    Next
    '-----------------------------------------------------------------------------
    Cls: Locate _Height, xbase: Print Chr$(234);: Sound 500, .1
    Locate 1, 2: Print "Ships ="; count; " Bangs ="; explosions; " Proof 40 ="; count + explosions
    For i = 0 To RowHeight - 1
        Locate TopRow + i, trail + l: Print RTrim$(Mid$(a$(i), l + 1));
    Next
    If TopRow - 1 + RowHeight = terminate Then Locate 3, 2: Print "GAME OVER - YOU LOST!": _Delay 5: End
    z1 = Timer
    Do
        If yfire Then
            If Abs(z2 - Timer) > .1 Then
                z2 = Timer
                If Screen(yfire, xfire) = 24 Then Locate yfire, xfire: Print " ";
                yfire = yfire - 1: If yfire < TopRow Then
                    yfire = 0
                Else
                    Locate yfire, xfire
                    If Screen(yfire, xfire) = 65 Then
                        RowCheck = 0: l = 0: r = 0
                        Mid$(a$(yfire - TopRow), xfire - trail + 1, 1) = " ": Sound 1000, .5: yfire = 0: explosions = explosions + 1 ' ADDED EXPLOSIONS VARIABLE.
                        If LTrim$(a$(0) + a$(1) + a$(2) + a$(3) + a$(4)) = "" Then Cls: Locate 3, 2: Print "GAME OVER - YOU WON!": _Delay 5: End
                        For i = 4 To 0 Step -1
                            If LTrim$(a$(i)) = "" And RowCheck = 0 Then RowHeight = i + 1 Else RowCheck = 1
                            If Len(RTrim$(a$(i))) > r Then r = Len(RTrim$(a$(i)))
                            If Len(LTrim$(a$(i))) > l Then l = Len(LTrim$(a$(i)))
                        Next
                        r = Len(s$) - r: l = Len(s$) - l
                    Else
                        Print Chr$(24);
                    End If
                End If
            End If
        End If
        Select Case _KeyHit
            Case 19200
                If xbase > 1 And restrict = 0 Then Locate _Height, xbase: Print " ";: xbase = xbase - 1: restrict = 1: Locate _Height, xbase: Print Chr$(234);
            Case 19712
                If xbase < _Width And restrict = 0 Then Locate _Height, xbase: Print " ";: xbase = xbase + 1: restrict = 1: Locate _Height, xbase: Print Chr$(234);
            Case -19200, -19712
                restrict = 0: _KeyClear
            Case 32
                If yfire = 0 Then Locate _Height - 1, xbase: Print Chr$(24);: yfire = _Height - 1: xfire = xbase
        End Select
        If Abs(z1 - Timer) > lag Then z1 = Timer: Exit Do
        _Limit 60
    Loop
    If trail + Len(s$) - r > _Width And bit = 1 Or trail = 1 - l And bit = -1 Then bit = -bit: TopRow = TopRow + 1: lag = lag - .025 Else trail = trail + bit
Loop

Pete
Reply


Messages In This Thread
Tiny Space Invaders - by bplus - 09-09-2025, 05:19 PM
RE: Tiny Space Invaders - by bplus - 09-09-2025, 05:32 PM
RE: Tiny Space Invaders - by dbox - 09-09-2025, 08:49 PM
RE: Tiny Space Invaders - by Pete - 09-09-2025, 07:30 PM
RE: Tiny Space Invaders - by bplus - 09-09-2025, 07:35 PM
RE: Tiny Space Invaders - by Unseen Machine - 09-09-2025, 10:21 PM
RE: Tiny Space Invaders - by dbox - 09-09-2025, 10:29 PM
RE: Tiny Space Invaders - by bplus - 09-09-2025, 11:58 PM
RE: Tiny Space Invaders - by Pete - 09-10-2025, 04:12 AM
RE: Tiny Space Invaders - by bplus - 09-10-2025, 02:31 PM
RE: Tiny Space Invaders - by Pete - 09-10-2025, 03:30 PM
RE: Tiny Space Invaders - by bplus - 09-10-2025, 04:08 PM
RE: Tiny Space Invaders - by dbox - 09-10-2025, 05:06 PM
RE: Tiny Space Invaders - by Pete - 09-10-2025, 11:00 PM
RE: Tiny Space Invaders - by dbox - 09-11-2025, 02:52 PM
RE: Tiny Space Invaders - by Pete - 09-11-2025, 04:39 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Space Invaders knock off to show simple collisions Unseen Machine 10 1,100 09-09-2025, 07:23 PM
Last Post: Pete
  Tiny Maze Maker - ASCII SierraKen 19 1,713 08-09-2025, 11:39 PM
Last Post: SierraKen
  Space Pongy bplus 3 826 11-29-2024, 11:18 PM
Last Post: SierraKen
  Tech Invaders 5 SierraKen 5 1,215 08-12-2024, 01:10 PM
Last Post: Dav
  sweet little circuit game space maker bplus 3 1,226 02-19-2024, 01:27 AM
Last Post: PhilOfPerth

Forum Jump:


Users browsing this thread: 1 Guest(s)