Pong johnno56 Senior Member Posts: 253 Threads: 27 Joined: Nov 2023 Reputation: 3 12-31-2023, 11:31 PM (This post was last modified: 01-01-2024, 07:43 AM by johnno56.) 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)     ... 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 endfunc``` The following is my N7 version of Pong (based on the N6 version) - not optimized - sorry...   pong3.zip (Size: 1.72 MB / Downloads: 8) Logic is the beginning of wisdom. 1micha.elok Member Posts: 159 Threads: 17 Joined: Nov 2023 Reputation: 0 01-01-2024, 08:32 AM (This post was last modified: 01-02-2024, 03:35 AM by 1micha.elok.) (12-31-2023, 11:31 PM)johnno56 Wrote: 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) ... do not forget the original N6 code... ... The following is my N7 version of Pong (based on the N6 version) - not optimized - sorry... How to play the Pong game ?  ... just kidding      The first time I played it was on an Atari machine Glad to see the Pong in Naalaa v7,  especially it has a chance for a player to beat the computer ( make the computer less intelligent  ) Code:```    '    Give the player a chance to beat the computer     '     comY = 0.9 * comY + 0.1 * comWantedY``` and I like the graphics, it has a futuristic background skin and a metallic ball .... It's very cool  Marcus Administrator Posts: 272 Threads: 34 Joined: Nov 2023 Reputation: 3 01-03-2024, 05:37 PM Very nice! I think I've got some stuff that I posted before the forum crashed that I should repost. « Next Oldest | Next Newest »