|
Post by bplus on Oct 14, 2023 14:08:47 GMT
And here is another version where I seed with different parallel line lengths:
f toggles a fade function:
Option _Explicit ' by bplus 2019-09-20 DefInt A-Z ' strip Quick Life down to bare essentials _Title "Core Life: f for fade look, t for traditioanal look, press spacebar when stabilized, esc to quit" Const xmax = 700, ymax = 700, n = 140, s = 5 Screen _NewImage(xmax, ymax, 32) _ScreenMove 360, 20 Dim g, x, y, r, nc, Fade 'nc is neighbor count Dim a(0 To n + 1, 0 To n + 1), ng(0 To n + 1, 0 To n + 1) 'a() is Life array, ng() is next generation Color &HFFFFFF00, &HFF080021: r = 35 Do 'seed for Conway's Life Classic Cls g = 0: r = r - 1: If r = 1 Then r = 68 For y = 0 To n + 1 For x = 0 To n + 1 'for symmetric line blocks If y = n / 2 And x > r And x < (n + 1 - r) Then a(x, y) = 1 Else a(x, y) = 0 Next Next While InKey$ <> " " And _KeyDown(27) = 0 'run life until spacebar detected For x = 1 To n For y = 1 To n nc = a(x - 1, y - 1) + a(x - 1, y) + a(x - 1, y + 1) + a(x, y - 1) + a(x, y + 1) + a(x + 1, y - 1) + a(x + 1, y) + a(x + 1, y + 1) If a(x, y) Then ' a is alive Classic Conway's Life Rules for survival If nc = 2 Or nc = 3 Then ng(x, y) = 1 Else ng(x, y) = 0 Else 'birth? If nc = 3 Then ng(x, y) = 1 Else ng(x, y) = 0 End If Next Next If _KeyDown(Asc("t")) Then Fade = 0 If _KeyDown(Asc("f")) Then Fade = -1 If Fade Then Line (0, 0)-Step(xmax, ymax), &H30080021, BF Else Line (0, 0)-Step(xmax, ymax), &HFF080021, BF For y = 1 To n For x = 1 To n If a(x, y) Then 'this separates into individual cells for Classic look Line ((x - 1) * s + 1, (y - 1) * s + 1)-Step(s - 2, s - 2), &HFFFFFFFF, BF End If Next Next Locate 1, 1: Print "Seed:"; r; " Gen:"; g _Display For y = 1 To n For x = 1 To n a(x, y) = ng(x, y) 'load a() with next generation data Next Next g = g + 1 _Display _Limit 10 Wend Loop Until _KeyDown(27) Cls: End
|
|
|
Post by marjagonzalves on Oct 14, 2023 18:13:12 GMT
|
|
|
Post by marjagonzalves on Oct 14, 2023 18:31:11 GMT
The "Life" entry was full of typos. I tried to fix it, but the best it could do was static screen. Suddenly there is D$() where there should be B$(). Near the top. The end of line 590 should be "Goto 610". Otherwise line number 610 is never executed. Whoever wrote this program (from New Jersey U.S.A.) didn't want to deal with clear screen command or didn't have "LOCATE". After display of "population" must have _DELAY to be able to see the changes. Otherwise it flickers very bad and goes too fast. Remember to anyone that enters a program from 8-bit computer like Atari or Commodore. In QB64 must use _DELAY or _LIMIT. Never leave to self-count FOR-NEXT loop. We have computers that are much faster than 8-bit. If things are not done properly program will not work correctly. Will not display properly. Meanwhile CPU gets hung up and operating system begins behaving strangely. This is an important tip given in QB64 Wiki, worth reading again. qb64phoenix.com/qb64wiki/index.php/QB64_FAQ#Q:_Are_there_any_known_incompatibilities?
|
|
|
Post by bplus on Oct 14, 2023 18:51:56 GMT
Morristown NJ code isn't even QB, it doesn't have If ... Then blocks (more than 1 line of code that ends with End If), it doesn't even have Else (on one line)! It does have a nightmare of Goto stuff!
Best to start from scratch if you know what you want to do and write it in QB.
Just get the jist of what the code is doing and then write up a more updated version.
The jist of Life is to set up an array of on / off cells and display, then the next generation is made by counting neighbors of each cell and according to life rules that cell lives, dies or is born or remains unborn, ie just track what lives! Keep next generation array separate from last until all the new array is filled from last then copy, display and repeat...
Then it is just a matter of how to start the thing off with a "seed" generation. Start with simple patterns like lines or boxes. Morristown is really tedious to input * and spaces! Practice coding skills by making patterned seeds of lines of different lengths or boxes or maybe T shapes... Play with birth and death rules see what happens.
Do you want to be an expert at getting old code to work in newer PL or do you want to be expert in coding what you envision?
|
|
|
Post by bplus on Oct 14, 2023 19:45:23 GMT
' Then it is just a matter of how to start the thing off with a "seed" generation. ' Start with simple patterns like lines or boxes. ' Morristown is really tedious to input * and spaces! ' Practice coding skills by making patterned seeds of lines of different lengths ' or boxes or maybe T shapes... Play with birth and death rules see what happens.
Do ' The jist of Life is to set up an array of on / off cells and display, ' then the next generation is made by counting neighbors of each cell ' and according to life rules that cell lives, dies or is born or remains unborn, ' ie just track what lives! ' Keep next generation array separate from last until all the new array is filled ' from last then copy, display and repeat...
Loop
Our first decision is to decide what size array we want to field our life diplay.
How about 800 x 600 standard demo screen And now decide cell size, say 10 x 10 so we have 80 X 60 cell field
XPixels = 800 YPixels = 600 CellSquare = 10 Dim Field(1 to 80, 1 to 60)
Display: for y = 1 to 60 for x = 1 to 80 if Field(x, y) then line( (x-1)*CellSquare, (y-1) ) - step ( CellSquare, CellSquare) , 14, BF next next
|
|
|
Post by bplus on Oct 14, 2023 19:53:34 GMT
Oh ha! Feild is a reserved word! OK use Cells() as array name.
_Title "Basic Life Proggie" ' bplus demo start 2023-10-14
XPixels = 800 YPixels = 600
Screen _NewImage(XPixels, YPixels, 12) ' the 12 only allows 16 colors
CellSquare = 10 Dim Cells(1 To 80, 1 To 60) ' Then it is just a matter of how to start the thing off with a "seed" generation. ' Start with simple patterns like lines or boxes. ' Morristown is really tedious to input * and spaces! ' Practice coding skills by making patterned seeds of lines of different lengths ' or boxes or maybe T shapes... Play with birth and death rules see what happens.
Do ' The jist of Life is to set up an array of on / off cells and display, Display: For y = 1 To 60 For x = 1 To 80 If Cells(x, y) Then Line ((x - 1) * CellSquare, (y - 1))-Step(CellSquare, CellSquare), 15, BF Next Next
' then the next generation is made by counting neighbors of each cell ' and according to life rules that cell lives, dies or is born or remains unborn, ' ie just track what lives! ' Keep next generation array separate from last until all the new array is filled ' from last then copy, display and repeat...
Loop
OK neighbor counts = NC
We have to be careful not to try to access the Cells array below 1 or above 80 for x and below and below 1 and above 60 for y or we get beeped Subscript out of range of array dimensions so I am going to change the cells array thus cells(0 to 81, 0 to 61) so when we check neighbors around say cells(1, 1) we wont get in trouble seeing what is at cells(0,1) or cells(1, 0) or cells(0,0) they will be 0 always from start.
For each cell x, y count how many live cells = 1 are there in 8 cells that surround cell x, y like a tic tac toe board with cell in question right at middle. nc = 0 For yy = y-1 to y+1 For xx = x-1 to x+1 if xx <> x AND yy <> y then 'dont count cell(x, y) the cell whose neighbors we are counting if cells(xx, yy) then nc = nc +1 end if next next
|
|
|
Post by bplus on Oct 14, 2023 20:31:42 GMT
I added Option _Explicit to start DIM'ing variables as we go
Option _Explicit _Title "Basic Life Proggie" ' bplus demo start 2023-10-14
Dim As Long XPixels, YPixels XPixels = 800 YPixels = 600
Screen _NewImage(XPixels, YPixels, 12) ' the 12 only allows 16 colors
Dim As Long CellSquare, x, y, xx, yy, nc CellSquare = 10 Dim Cells(0 To 81, 0 To 61) ' Then it is just a matter of how to start the thing off with a "seed" generation. ' Start with simple patterns like lines or boxes. ' Morristown is really tedious to input * and spaces! ' Practice coding skills by making patterned seeds of lines of different lengths ' or boxes or maybe T shapes... Play with birth and death rules see what happens.
Do ' The jist of Life is to set up an array of on / off cells and display, Display: For y = 1 To 60 For x = 1 To 80 If Cells(x, y) Then Line ((x - 1) * CellSquare, (y - 1))-Step(CellSquare, CellSquare), 15, BF Next Next
' then the next generation is made by counting neighbors of each cell nc = 0 For yy = y - 1 To y + 1 For xx = x - 1 To x + 1 If xx <> x And yy <> y Then 'dont count cell(x, y) the cell whose neighbors we are counting If Cells(xx, yy) Then nc = nc + 1 End If Next Next
' and according to life rules that cell lives, dies or is born or remains unborn, ' ie just track what lives! ' Keep next generation array separate from last until all the new array is filled ' from last then copy, display and repeat...
Loop
We might as well do our neighbor counts while display array and we will need a NextGeneration Array, same size as Cells, set up to load when we follow Life Rules of Birth, Live Death which are: A live cell with 2 or 3 neighbors lives on A dead cell with 3 neighbors is born The rest die or remain unborn.
|
|
|
Post by bplus on Oct 14, 2023 20:48:43 GMT
Option _Explicit _Title "Basic Life Proggie" ' bplus demo start 2023-10-14
Dim As Long XPixels, YPixels XPixels = 800 YPixels = 600
Screen _NewImage(XPixels, YPixels, 12) ' the 12 only allows 16 colors
Dim As Long CellSquare, x, y, xx, yy, nc CellSquare = 10 Dim Cells(0 To 81, 0 To 61), NextGeneration(0 To 81, 0 To 61) ' Then it is just a matter of how to start the thing off with a "seed" generation. ' Start with simple patterns like lines or boxes. ' Morristown is really tedious to input * and spaces! ' Practice coding skills by making patterned seeds of lines of different lengths ' or boxes or maybe T shapes... Play with birth and death rules see what happens.
Do ' The jist of Life is to set up an array of on / off cells and display, 'Display For y = 1 To 60 For x = 1 To 80 If Cells(x, y) Then Line ((x - 1) * CellSquare, (y - 1))-Step(CellSquare, CellSquare), 15, BF
' We might as well do our neighbor counts while display array ' and we will need a NextGeneration Array, same size as Cells, 'set up to load when we follow Life Rules of Birth, Live Death which are: ' then the next generation is made by counting neighbors of each cell nc = 0 For yy = y - 1 To y + 1 For xx = x - 1 To x + 1 If xx <> x And yy <> y Then 'dont count cell(x, y) the cell whose neighbors we are counting If Cells(xx, yy) Then nc = nc + 1 End If Next Next
' and according to life rules that cell lives, dies or is born or remains unborn,
'A live cell with 2 or 3 neighbors lives on 'A dead cell with 3 neighbors is born 'The rest die or remain unborn. If Cells(x, y) = 1 And ((nc = 2) Or (nc = 3)) Then NextGeneration(x, y) = 1 ElseIf Cells(x, y) = 0 And nc = 3 Then NextGeneration(x, y) = 1 Else NextGeneration(x, y) = 0 End If Next Next
' Keep next generation array separate from last until all the new array is filled ' from last then copy and repeat...
' get cells ready for next generation display For y = 1 To 60 For x = 1 To 80 Cells(x, y) = NextGeneration(x, y) Next Next Loop
That should do it for the main loop of Basic Life program.
Next we will play around with seeds starting with a line 3 cells across, it should blink at us if all is well with code.
Can you guess what shape the blinker will make?
to * and repeat... *** * *
|
|
|
Post by bplus on Oct 14, 2023 21:11:21 GMT
Well I have a bug somewhere?
Option _Explicit _Title "Basic Life Proggie" ' bplus demo start 2023-10-14
Dim As Long XPixels, YPixels XPixels = 800 YPixels = 600
Screen _NewImage(XPixels, YPixels, 12) ' the 12 only allows 16 colors
Dim As Long CellSquare, x, y, xx, yy, nc CellSquare = 10 Dim Cells(0 To 81, 0 To 61), NextGeneration(0 To 81, 0 To 61) ' Then it is just a matter of how to start the thing off with a "seed" generation. ' Start with simple patterns like lines or boxes. ' Morristown is really tedious to input * and spaces! ' Practice coding skills by making patterned seeds of lines of different lengths ' or boxes or maybe T shapes... Play with birth and death rules see what happens.
' seed a 3 cell blinker For x = 39 To 41 Cells(x, 30) = -1 Next Do ' The jist of Life is to set up an array of on / off cells and display, Cls 'Display For y = 1 To 60 For x = 1 To 80 If Cells(x, y) Then Line ((x - 1) * CellSquare, (y - 1) * CellSquare)-Step(CellSquare, CellSquare), 15, BF Line ((x - 1) * CellSquare, (y - 1) * CellSquare)-Step(CellSquare, CellSquare), 0, B End If
' We might as well do our neighbor counts while display array ' and we will need a NextGeneration Array, same size as Cells, 'set up to load when we follow Life Rules of Birth, Live Death which are: ' then the next generation is made by counting neighbors of each cell nc = 0 For yy = y - 1 To y + 1 For xx = x - 1 To x + 1 If (xx <> x) And (yy <> y) Then 'dont count cell(x, y) the cell whose neighbors we are counting If Cells(xx, yy) Then nc = nc + 1 ' : Beep ' debug OK End If Next Next
' and according to life rules that cell lives, dies or is born or remains unborn,
'A live cell with 2 or 3 neighbors lives on 'A dead cell with 3 neighbors is born 'The rest die or remain unborn. If (Cells(x, y) = -1) And (nc = 2) Then NextGeneration(x, y) = -1 Beep 'debug ElseIf (Cells(x, y) = -1) And (nc = 3) Then NextGeneration(x, y) = -1 Beep 'debug ElseIf (Cells(x, y) = 0) And (nc = 3) Then NextGeneration(x, y) = -1 Beep ' debug Else NextGeneration(x, y) = 0 End If Next Next
' Keep next generation array separate from last until all the new array is filled ' from last then copy and repeat...
' get cells ready for next generation display For y = 1 To 60 For x = 1 To 80 Cells(x, y) = NextGeneration(x, y) Next Next _Display '_Limit 30 Sleep Loop Probably some dumb thing. Guess I'll look at it again after supper...
I started debugging using beeps to indicate code is counting neighbors and it isn't beeping so after first display and keypress for sleep the screen goes blank.
|
|
|
Post by bplus on Oct 14, 2023 23:50:56 GMT
OK it turns out the bug was in here:
nc = 0 For yy = y - 1 To y + 1 For xx = x - 1 To x + 1 If (xx <> x) And (yy <> y) Then 'dont count cell(x, y) the cell whose neighbors we are counting If Cells(xx, yy) Then nc = nc + 1 ' : Beep ' debug OK End If Next Next
Counting neighbors, it was way off counting.
in particular this didn't work as expected; If (xx <> x) And (yy <> y) Then I was trying not count the cell itself just it's neighbors, it might be clearer in the next code block that fixes
nc = 0 For yy = (y - 1) To (y + 1) For xx = (x - 1) To (x + 1) If xx = x And yy = y Then 'dont count cell(x, y) the cell whose neighbors we are counting Else If Cells(xx, yy) Then nc = nc + 1: Beep ' debug OK End If Next Next
But when I was getting Help at Discord ZXDunny showed me a way without IF checking which is more effecient to do when you can. Next post will have that method of neighbor counting, when I clean up my debugging mess.
|
|
|
Post by bplus on Oct 15, 2023 1:19:43 GMT
Final Demo version. I reset pixel width and height so can do perfect symmetry with x, y axis
I have 3 seed methods 1. The 3 star blinker just for testing. 2. A Random cell seeder 3. Best is a random length line, hit r to restart seed with different length line across middle. Best! and works with r key to restart.
Press spacebar to view next generation of Life across the screen.
Option _Explicit _Title "Basic Life Proggie spcebar = next generation, r = restart line seed" ' bplus demo start 2023-10-14
Dim As Long XPixels, YPixels XPixels = 810 ' so we can do perfect symmetry YPixels = 610 ' ditto
Screen _NewImage(XPixels, YPixels, 12) ' the 12 only allows 16 colors _ScreenMove 200, 60
Dim As Long CellSquare, XCells, YCells, x, y, xx, yy, nc CellSquare = 10 XCells = XPixels \ CellSquare YCells = YPixels \ CellSquare 'Print XCells, YCells, Int(YCells / 2 + .5)
' redim for easy clear, Erase was giving me hell ReDim As Long Cells(XCells + 1, YCells + 1) Dim As Long NextGeneration(XCells + 1, YCells + 1)
' Then it is just a matter of how to start the thing off with a "seed" generation. ' Start with simple patterns like lines or boxes. ' Morristown is really tedious to input * and spaces! ' Practice coding skills by making patterned seeds of lines of different lengths ' or boxes or maybe T shapes... Play with birth and death rules see what happens.
' seed a 3 cell blinker 'For x = 40 To 42 ' Cells(x, Int(YCells / 2 + .5)) = 1 'Next ' restart:
' line seeder for Nice symmetry! use r to restart at different lengths Dim As Long rl, midx midx = Int(XCells / 2 + .5) rl = Int(Rnd * (midx - 2)) + 1 For x = midx - rl To midx + rl Cells(x, Int(YCells / 2 + .5)) = 1 Next
'For x = 40 To 42 ' Cells(x, Int(YCells / 2 + .5)) = 1 'Next
' random seeder 'For x = 1 To 1000 ' Cells(Int(Rnd * XCells) + 1, Int(Rnd * YCells) + 1) = 1 'Next
Do ' The jist of Life is to set up an array of on / off cells and display, Cls 'Display For y = 1 To YCells For x = 1 To XCells If Cells(x, y) Then Line ((x - 1) * CellSquare, (y - 1) * CellSquare)-Step(CellSquare, CellSquare), 15, BF Line ((x - 1) * CellSquare, (y - 1) * CellSquare)-Step(CellSquare, CellSquare), 0, B End If
' We might as well do our neighbor counts while display array ' and we will need a NextGeneration Array, same size as Cells, 'set up to load when we follow Life Rules of Birth, Live Death which are: ' then the next generation is made by counting neighbors of each cell nc = 0 For yy = y - 1 To y + 1 For xx = x - 1 To x + 1 nc = nc + Cells(xx, yy) ' no ifs Next Next nc = nc - Cells(x, y) ' just remove extra count if not 0
' and according to life rules that cell lives, dies or is born or remains unborn,
'A live cell with 2 or 3 neighbors lives on 'A dead cell with 3 neighbors is born 'The rest die or remain unborn.
If Cells(x, y) And (nc = 2) Then NextGeneration(x, y) = 1 ElseIf Cells(x, y) And (nc = 3) Then NextGeneration(x, y) = 1 ElseIf (Cells(x, y) = 0) And (nc = 3) Then NextGeneration(x, y) = 1 Else NextGeneration(x, y) = 0 End If Next Next
' Keep next generation array separate from last until all the new array is filled ' from last then copy and repeat...
' get cells ready for next generation display For y = 1 To YCells For x = 1 To XCells Cells(x, y) = NextGeneration(x, y) Next Next _Display _Limit 30 If InKey$ = "r" Then ReDim Cells(XCells + 1, YCells + 1): GoTo restart Sleep Loope
|
|
abram
New Member
Posts: 44
|
Post by abram on Oct 15, 2023 18:38:19 GMT
very nice. makes me think I should have my keyboard repeat rate faster.
|
|
|
Post by marjagonzalves on Oct 15, 2023 20:31:05 GMT
I hope I got the essence of the original "Cube".
There is no wagering in this game. Pathetic attempt to make it fun. I added a "peek" for five seconds, but it should display three-dimensional grid. So why array type is not _BIT? I wanted to put other things. I considered putting a portal sending player back to 1,1,1.
The keys to press aren't intuitive, but they could be changed. If game becomes too easy then take comment away for "RANDOMIZE" line.
'by Marja Gonzalves, with some help from "roquedrivel" from BASIC4US forum OPTION _EXPLICIT DIM bord(1 TO 3, 1 TO 3, 1 TO 3) AS _BYTE DIM AS INTEGER px, py, pz, x, y, z, g, turn DIM AS STRING k1u, k2u, k3u, k1d, k2d, k3d DIM q$, mesg$, youcannot$
youcannot$ = "You cannot move there, going off the board."
'for level of challenge allow this executed: 'RANDOMIZE TIMER
'change these keys so they are more comfortable for you: k1u = "q" k1d = "a" k2u = "1" k2d = "2" k3u = "[" k3d = "]"
DO turn = 0 px = 1 py = 1 pz = 1 FOR x = 1 TO 3 FOR y = 1 TO 3 FOR z = 1 TO 3 bord(z, y, x) = 0 NEXT NEXT NEXT FOR g = 1 TO 7 DO x = Rand(2, 3) y = Rand(1, 3) z = Rand(1, 3) IF Rand(1, 3) = 1 THEN SWAP x, y IF Rand(1, 3) = 1 THEN SWAP x, z IF Rand(1, 3) = 1 THEN SWAP y, z LOOP WHILE bord(z, y, x) IF g > 5 THEN bord(z, y, x) = 2 ELSE bord(z, y, x) = 1 END IF NEXT
_TITLE "Cube. From game by D.Ahl BASIC COMPUTER GAMES" CLS DO turn = turn + 1 DO: LOOP UNTIL INKEY$ = "" PRINT "Currently you are at position, x ="; px; ", y ="; py; ", z ="; pz PRINT "Waiting for your move now: "; k1u; k2u; k3u; k1d; k2d; k3d q$ = INPUT$(1) mesg$ = "You did not press a valid key." IF q$ = k1u THEN IF px > 1 THEN px = px - 1 mesg$ = "" ELSE mesg$ = youcannot$ END IF ELSEIF q$ = k2u THEN IF py > 1 THEN py = py - 1 mesg$ = "" ELSE mesg$ = youcannot$ END IF ELSEIF q$ = k3u THEN IF pz > 1 THEN pz = pz - 1 mesg$ = "" ELSE mesg$ = youcannot$ END IF ELSEIF q$ = k1d THEN IF px < 3 THEN px = px + 1 mesg$ = "" ELSE mesg$ = youcannot$ END IF ELSEIF q$ = k2d THEN IF py < 3 THEN py = py + 1 mesg$ = "" ELSE mesg$ = youcannot$ END IF ELSEIF q$ = k3d THEN IF pz < 3 THEN pz = pz + 1 mesg$ = "" ELSE mesg$ = youcannot$ END IF END IF IF mesg$ <> "" THEN PRINT mesg$ _CONTINUE END IF IF bord(pz, py, px) = 2 THEN PRINT "You have a short time to see the board!" FOR z = 1 TO 3 PRINT "PAGE"; z; ":" FOR y = 1 TO 3 FOR x = 1 TO 3 IF bord(z, y, x) = 2 THEN PRINT CHR$(1); " "; ELSEIF bord(z, y, x) = 1 THEN PRINT CHR$(15); " "; ELSE PRINT " "; END IF NEXT PRINT NEXT PRINT STRING$(40, 45) NEXT _DELAY 5 CLS bord(pz, py, px) = 0 END IF IF bord(pz, py, px) = 1 THEN EXIT DO LOOP UNTIL px = 3 AND py = 3 AND pz = 3
IF px = 3 AND py = 3 AND pz = 3 THEN PRINT "Congratulations, you have reached the other ''side'' of the cube!" ELSE PRINT "You have landed into a mine. Better luck next time." END IF PRINT "It took"; turn; "turns." DO: LOOP UNTIL INKEY$ = "" PRINT "Press ''y'' to play again, or another key to quit." q$ = INPUT$(1) LOOP WHILE LCASE$(q$) = "y" SYSTEM
FUNCTION Rand& (loval AS LONG, hival AS LONG) Rand& = INT(RND * (hival - loval + 1) + loval) END FUNCTION
|
|
|
Post by bplus on Oct 16, 2023 12:58:42 GMT
Sorry MG, I don't get it! Does anyone have a link that explains this Cube game in English? a YouTube playing it would be great! None of these from Google Search (copy and paste the whole string below to see what I am seeing in my search): www.google.com/search?q=Playing+an+old+computer+game+called+"CUBE"&client=opera&hs=b7l&sca_esv=573777804&ei=1zItZbX-O6zKkPIPvc24wAQ&ved=0ahUKEwj1xcDozvqBAxUsJUQIHb0mDkgQ4dUDCA8&uact=5&oq=Playing+an+old+computer+game+called+"CUBE"&gs_lp=Egxnd3Mtd2l6LXNlcnAiKlBsYXlpbmcgYW4gb2xkIGNvbXB1dGVyIGdhbWUgY2FsbGVkICJDVUJFIjIKEAAYRxjWBBiwAzIKEAAYRxjWBBiwAzIKEAAYRxjWBBiwAzIKEAAYRxjWBBiwAzIKEAAYRxjWBBiwAzIKEAAYRxjWBBiwAzIKEAAYRxjWBBiwAzIKEAAYRxjWBBiwA0iHI1AAWABwAXgAkAEAmAFgoAFgqgEBMbgBA8gBAOIDBBgAIEGIBgGQBgg&sclient=gws-wiz-serp seem a good match to code I am seeing from MG and first post in this thread.
|
|
|
Post by bplus on Oct 16, 2023 14:08:20 GMT
Aha! Charlie has provided the original doc with a picture! www.atariarchives.org/basicgames/showpage.php?page=53Bang! Or is it BAM? thanks Charlie! Now I can guess why the original code was telling me 1,1,2 and 1,2,1 and 2,1,1 were illegal moves! What this game needs is that picture that comes with the docs in David Ahl's book, should be a piece of cake to make in QB64! So get to it guys or gals don't let your users attempt this game without a picture of the "Cube" and provide plenty of labels so your game is user friendly. That will make it more popular because it's understandable.
|
|