12-31-2023, 11:31 PM
Cast your minds back to before the arrival of Mario when Dinosaurs walked... Sorry. Too far back...
Back when Naalaa 6 reigned supreme... with its Tile Map editor and Raycaster... from the minds of Allan Alcorn and Nolan Bushnell (1972) came the awe-inspiring spectacle that was to be known as "Pong"... made its way to our monitors in all of its monochromatic glory!! The Naalaa 6 version was produced by none other than Marcus (drum roll) Johansson. (see screen grab)
[attachment=33]
... do not forget the original N6 code...
The following is my N7 version of Pong (based on the N6 version) - not optimized - sorry...
[attachment=34]
Back when Naalaa 6 reigned supreme... with its Tile Map editor and Raycaster... from the minds of Allan Alcorn and Nolan Bushnell (1972) came the awe-inspiring spectacle that was to be known as "Pong"... made its way to our monitors in all of its monochromatic glory!! The Naalaa 6 version was produced by none other than Marcus (drum roll) Johansson. (see screen grab)
[attachment=33]
... do not forget the original N6 code...
Code:
rem ==================================================================
rem Pong, from basicprogramming.org.
rem
rem By Marcus Johansson.
rem ==================================================================
import "Speed.lib"
set window 0, 0, 320, 240, false, 2
set redraw off
plyX = 8
comX = 320 - 24
comY# = 120.0
comWantedY# = 120.0
comTimer = 25
hasBall = 1
ballX#
ballY#
ballDX#
ballDY#
ballSpeed# = 3.0
comScore = 0
plyScore = 0
do
plyY = mousey()
if hasBall = 1
ballX# = float(plyX + 16)
ballY# = float(plyY - 4)
if mousebutton(0)
ballDX = 1.0
ballDY = 0.0
ballSpeed = 2.0
hasBall = 0
endif
elseif hasBall = 2
ballX = float(comX - 8)
ballY = comY - 4.0
else
ballX = ballX + ballDX*ballSpeed
ballY = ballY + ballDY*ballSpeed
if ballY < 0.0
ballY = 0.0
ballDY = -ballDY
elseif ballY# > 240.0 - 8.0
ballY = 240.0 - 8.0
ballDY = -ballDY
endif
if ballDX < 0.0
if RectsOverlap(plyX, plyY - 24, 16, 48, int(ballX), int(ballY), 8, 8)
dy# = (ballY - float(plyY))/64.0
dx# = 0.5
k# = 1.0/sqr(dx*dx + dy*dy)
ballDX# = k*dx
ballDY# = k*dy
ballSpeed = min#(ballSpeed*1.1, 6.0)
endif
else
if RectsOverlap(comX, int(comY) - 24, 16, 48, int(ballX), int(ballY), 8, 8)
dy# = (ballY - comY)/64.0
dx# = -0.5
k# = 1.0/sqr(dx*dx + dy*dy)
ballDX# = k*dx
ballDY# = k*dy
ballSpeed = min#(ballSpeed*1.1, 6.0)
endif
endif
if ballX > 320.0
hasBall = 1
plyScore = plyScore + 1
elseif ballX < -8.0
hasBall = 2
comTimer = 50
comWantedY = float(rnd(240))
comScore = comScore + 1
endif
endif
comTimer = comTimer - 1
if comTimer <= 0
if hasBall = 1
comWantedY = ballY - 16.0 + float(rnd(32)) + (float(comX) - ballX)/ballSpeed*ballDY
comTimer = comTimer + 25 + rnd(25)
elseif hasBall = 2
hasBall = 0
ballDX = -1.0
ballDY = 0.0
ballSpeed = 2.0
else
comWantedY = ballY - 20.0 + float(rnd(40)) + (float(comX) - ballX)/ballSpeed*ballDY
if ballDX < 0.0
comTimer = comTimer + 20 + rnd(20)
else
comTimer = comTimer + 6 + rnd(6)
endif
endif
endif
comY = 0.90*comY + 0.1*comWantedY
set color 0, 0, 0
cls
set color 255, 255, 255
for y = 0 to 29
draw rect 160 - 2, y*8 + 2, 4, 4, true
next
draw rect plyX, plyY - 24, 16, 48, true
draw rect comX, int(comY) - 24, 16, 48, true
draw rect int(ballX), int(ballY), 8, 8, true
set caret 16, 8
center plyScore
set caret 320 - 16, 8
center comScore
redraw
proc SPD_HoldFrame(60)
until keydown(27) or not running()
function RectsOverlap(x0, y0, w0, h0, x1, y1, w1, h1)
if x0 + w0 < x1 then return false
if y0 + h0 < y1 then return false
if x1 + w1 < x0 then return false
if y1 + h1 < y0 then return false
return true
endfuncThe following is my N7 version of Pong (based on the N6 version) - not optimized - sorry...
[attachment=34]
![[Image: xQmFxCSLFhkDbYG4m6E5x3-415-80.png]](https://cdn.mos.cms.futurecdn.net/xQmFxCSLFhkDbYG4m6E5x3-415-80.png)
