Hello Everyone,
This is the completed version of Lucky Numbers board game including Solo Play. Solo Play is a puzzle game the challenges the player to try to complete 40 levels of play.
During the making of the Solo Play edition, my hard drive on my laptop crashed and won't load Windows. This was the only location where I had Solo Play with no other backups, only a few hand written notes. Unable to recover any data at this time, I simply downloaded the 2 to 4 player version from here and started over.
The Solo Play also includes some updates to the original 2 to 4 player version:
1 - I change the deck card back to a color one.
2 - When there are no cards on the table, the game automatically draws a card from the deck for the player.
3 - When choosing a table card, the player doesn't need to click in the large table cursor then click on the card, they only need to click on the card. A player can click on that card again to un-select it or even click on a different table card.
The Solo Play version as mentioned is a puzzle game with 40 levels. A player must complete the current level or highest level completed before attempting a harder level. You see, a player may play any level lower up yo their current level. There a can be 8 different players playing at their own level on a single device. They are identified by their name they enter at the start of their game.
Each level has a predetermined number of moves to complete the puzzle from 2 to 8. The puzzle starts off with the 16 cards already arranged on the board. However, a few of the cards are not in their correct position on the board. The player swaps pairs of cards at a time, a predetermined number of moves to complete the puzzle. If the puzzle was not successfully complete, they are required to restart that level. However, if they did complete the puzzle, they advance to the next puzzle. As players complete levels, their game is saved to HD.
When the game is first played on a device, there are no current players stored on HD and the player is asked to enter their name. That player starts at puzzle level 1 and must complete that level before going to level 2. After that first time the game is played, the game loads the current players and you choose your name. If you are a new player, you can select NEW PLAYER and the game will ask you to enter your name and you will start at level 1.
Cards can only be swapped next to each other (side by side or top and bottom) or at opposite ends of the board on the same row or column.
At any time during the play of a level, a player my choose to restart that level, choose a different level, choose a different player, quit the game or play solution.
If you choose to play solution, the game shows you all of the moves to complete the puzzle. Most puzzle games includes the solution to each puzzle, however, I could find one for this game. I included the first 8 levels in this game, but unable to complete level 9. If anyone plays this and able to complete more levels and wants to record the moves, please feel free to post the solutions.
Hope you enjoy playing. Donald
Code: (Select All)
_Title "Lucky Numbers - Coded by Donald L. Foster Jr."
Screen _NewImage(1035, 735, 256)
Randomize Timer
_PaletteColor 1, _RGB32(0, 0, 90) ' Blue Playing Board
_PaletteColor 2, _RGB32(0, 155, 155) ' Cyan Board Spacer
_PaletteColor 3, _RGB32(235, 195, 0) ' Gold Card
_PaletteColor 4, _RGB32(50, 185, 30) ' Green Card
_PaletteColor 5, _RGB32(32, 110, 170) ' Blue Card
_PaletteColor 6, _RGB32(138, 43, 226) ' Purple Card
Dim R As Integer
Dim S As Integer
Dim T As Integer
Dim U As Integer
Dim V As Integer
Dim W As Integer
Dim X As Integer
Dim Y As Integer
Dim Z As Integer
Dim X1 As Integer
Dim X2 As Integer
Dim X3 As Integer
Dim X4 As Integer
Dim Player As Integer
Dim Players As Integer
Dim Row As Integer
Dim Column As Integer
Dim Winner As Integer
Dim Card As Integer
Dim CardColor As Integer
Dim Board As Integer
Dim Variation As Integer
Dim DeckCards As Integer
Dim TableCards As Integer
Dim PlayCard As Integer
Dim PlayColor As Integer
Dim OldCard As Integer
Dim OldColor As Integer
Dim LowCard As Integer
Dim Occupied As Integer
Dim CanPlay As Integer
Dim DrawPile As Integer
Dim Table As Integer
Dim Position As Integer
Dim Routine As Integer
Dim CardDrawn As Integer
Dim Selected As Integer
Dim Level As Integer
Dim PrevColor As Integer
Dim NextColor As Integer
Dim Move As Integer
Dim EndTurn As Integer
Dim As Integer Row1, Col1, Row2, Col2
Dim DeckColor(80) As Integer
Dim DeckCard(80) As Integer
Dim CardColor(5) As Integer
Dim Placed(80) As Integer
Dim BoardCenterX(5) As Integer
Dim BoardCenterY(5) As Integer
Dim TableCard(12) As Integer
Dim TableColor(12) As Integer
Dim TableX(12) As Integer
Dim TableY(12) As Integer
Dim PlayerNameY(8) As Integer
Dim SoloMoves(40) As Integer
Dim ChooseLevelMenu(3) As Integer
Dim PlayLevelMenu(5) As Integer
Dim Menu(6) As String
Dim HoldCard(4, 4) As Integer
Dim HoldColor(4, 4) As Integer
Dim Sorted(4, 4) As Integer
Dim Row1(40, 8) As Integer
Dim Col1(40, 8) As Integer
Dim Row2(40, 8) As Integer
Dim Col2(40, 8) As Integer
Dim BoardX(5, 4, 4) As Integer
Dim BoardY(5, 4, 4) As Integer
Dim BoardCard(5, 4, 4) As Integer
Dim BoardColor(5, 4, 4) As Integer
Dim SoloBoard(40, 4, 4) As Integer
CardColor(1) = 3: CardColor(2) = 4: CardColor(3) = 5: CardColor(4) = 6
ChooseLevelMenu(1) = 1: ChooseLevelMenu(2) = 2: ChooseLevelMenu(3) = 6
PlayLevelMenu(1) = 3: PlayLevelMenu(2) = 4: PlayLevelMenu(3) = 5: PlayLevelMenu(4) = 2: PlayLevelMenu(5) = 6
Menu$(1) = " Play Level ": Menu$(2) = "Choose Player": Menu$(3) = " Play Solution ": Menu$(4) = " Restart Level ": Menu$(5) = " Choose Level ": Menu$(6) = " End Game "
' Setup Solo Boards
Data 1,2,5,8,4,7,9,13,10,12,19,17,16,14,15,20,2: ' Board 1
Data 2,18,4,7,3,8,12,13,9,10,15,17,11,14,5,19,2: ' Board 2
Data 13,4,5,9,1,6,12,3,7,10,15,20,11,14,16,17,3: ' Board 3
Data 2,4,5,9,3,10,8,17,7,12,18,15,13,11,16,19,3: ' Board 4
Data 13,3,5,7,4,8,9,10,11,1,14,17,15,12,16,19,3: ' Board 5
Data 1,3,7,5,4,9,8,10,11,12,17,14,13,15,16,19,3: ' Board 6
Data 1,2,5,13,4,12,15,8,17,7,9,10,14,16,19,20,4: ' Board 7
Data 2,14,5,7,9,8,12,3,13,10,15,17,4,11,18,19,4: ' Board 8
Data 1,5,16,9,3,6,12,7,17,10,15,13,11,14,4,20,4: ' Board 9
Data 2,4,5,9,3,10,15,17,7,12,8,18,19,11,16,13,4: ' Board 10
Data 7,3,1,5,11,8,9,4,10,12,14,17,13,15,16,19,4: ' Board 11
Data 2,8,6,7,5,3,14,17,12,10,9,15,11,13,16,19,4: ' Board 12
Data 1,2,8,13,4,7,9,5,10,12,17,20,14,19,16,15,5: ' Board 13
Data 2,14,5,7,13,8,12,17,9,10,3,15,11,18,4,19,5: ' Board 14
Data 11,4,5,9,7,6,12,13,17,1,15,3,14,10,16,20,5: ' Board 15
Data 2,4,16,9,8,3,5,17,18,15,12,7,11,13,10,19,5: ' Board 16
Data 1,3,5,7,8,12,14,10,17,11,9,4,13,15,16,19,5: ' Board 17
Data 2,3,16,19,2,8,9,15,12,14,10,17,11,13,7,6,5: ' Board 18
Data 2,5,7,6,8,3,9,15,10,12,13,17,11,16,14,19,5: ' Board 19
Data 7,3,16,2,5,10,15,9,17,8,14,12,11,13,6,19,6: ' Board 20
Data 1,16,5,20,13,9,7,4,17,15,12,10,14,2,19,8,6: ' Board 21
Data 4,5,2,7,3,10,12,13,9,14,15,17,18,8,19,11,6: ' Board 22
Data 11,5,4,7,13,8,3,12,10,2,15,17,9,14,18,19,6: ' Board 23
Data 1,4,5,12,3,7,13,9,10,6,20,17,11,14,15,16,6: ' Board 24
Data 1,14,5,7,3,6,12,13,15,4,17,20,11,10,16,9,6: ' Board 25
Data 17,5,4,2,7,8,15,9,3,12,10,18,11,16,13,19,6: ' Board 26
Data 9,19,4,2,3,8,5,10,7,12,15,17,11,13,16,18,6: ' Board 27
Data 13,3,5,19,10,9,8,4,17,14,12,11,1,15,16,7,6: ' Board 28
Data 2,14,18,7,13,8,12,3,4,10,15,5,9,11,19,17,7: ' Board 29
Data 3,4,7,5,8,10,12,13,9,15,18,17,11,14,19,2,7: ' Board 30
Data 20,4,5,9,3,15,12,13,7,14,6,17,11,10,16,1,7: ' Board 31
Data 4,1,20,5,6,3,12,13,10,7,15,17,14,11,9,16,7: ' Board 32
Data 11,13,5,9,17,10,15,3,18,12,7,8,2,4,16,19,7: ' Board 33
Data 3,10,4,9,2,5,8,17,11,12,15,7,19,13,16,18,7: ' Board 34
Data 1,19,13,8,12,7,9,5,10,4,15,17,14,2,16,20,8: ' Board 35
Data 4,2,19,10,8,7,9,1,17,12,15,13,5,16,20,14,8: ' Board 36
Data 3,5,7,17,2,10,8,9,12,7,16,19,13,11,15,18,8: ' Board 37
Data 3,13,5,9,8,12,10,17,18,15,16,7,11,4,19,2,8: ' Board 38
Data 7,15,5,10,11,8,14,1,4,12,9,13,19,16,3,17,8: ' Board 39
Data 3,15,5,7,11,8,10,12,4,14,9,17,19,13,16,1,8: ' Board 40
For Z = 1 To 40: For Y = 1 To 4: For X = 1 To 4: Read SoloBoard(Z, Y, X): Next: Next: Read SoloMoves(Z): Next
' Setup Solution
Data 3,3,4,3,4,1,4,2: ' Solution 1
Data 1,2,1,3,1,3,4,3: ' Solution 2
Data 1,1,2,1,2,1,2,4,3,4,4,4: ' Solution 3
Data 2,2,2,3,2,4,3,4,3,3,4,3: ' Solution 4
Data 3,2,4,2,4,1,4,2,1,1,4,1: ' Solution 5
Data 1,3,1,4,2,2,2,3,3,3,3,4: ' Solution 6
Data 1,4,2,4,2,2,3,2,2,3,3,3,3,1,3,4: ' Solution 7
Data 4,1,4,2,1,2,4,2,2,1,3,1,2,1,4,1: ' Solution 8
For Z = 1 To 8: For Y = 1 To SoloMoves(Z): Read Row1(Z, Y), Col1(Z, Y), Row2(Z, Y), Col2(Z, Y): Next: Next
fontpath$ = Environ$("SYSTEMROOT") + "\fonts\Arialbd.ttf"
fontpath1$ = Environ$("SYSTEMROOT") + "\fonts\Arial.ttf"
Color 2, 0: font& = _LoadFont(fontpath$, 80): _Font font&
Locate 2, 295: Print "L U C K Y";
Locate 4, 175: Print "N U M B E R S";
Color 15, 0: font& = _LoadFont(fontpath$, 60): _Font font&
Locate 7, 185: Print "W i t h S o l o P l a y";
Color 15, 0: font& = _LoadFont(fontpath$, 30): _Font font&
Locate 19, 310: Print "How Many Players? ( 1 to 4 )";
GetPlayers:
A$ = InKey$: If A$ = "" GoTo GetPlayers
If Asc(A$) = 27 And FullScreen = 0 Then FullScreen = -1: _FullScreen _SquarePixels , _Smooth Else If Asc(A$) = 27 Then FullScreen = 0: _FullScreen _Off
If Val(A$) < 1 Or Val(A$) > 4 GoTo GetPlayers
Players = Val(A$)
' Setup Deck of Cards
DeckCards = Players * 20
For Z = 1 To DeckCards: Placed(Z) = 0: Next
For Z = 1 To 20
For Y = 1 To Players
Placed: X = Int(Rnd * DeckCards) + 1: If Placed(X) = 0 Then Placed(X) = 1: DeckCard(X) = Z: DeckColor(X) = Y Else GoTo Placed
Next
Next
' Setup PlayerNameY()
V = 0: For Z = 1 To 8: PlayerNameY(Z) = 190 + V: Name$(Z) = "EMPTY": V = V + 50: Next
Cls
Color 2, 0: font& = _LoadFont(fontpath$, 25): _Font font&
_PrintString (812, 10), "L U C K Y"
_PrintString (774, 35), "N U M B E R S"
' Get Board X, Y Positions
If Players = 4 Then
X = 186: Board = 1
For Z = 1 To 2
W = 186
For Y = 1 To 2
U = X - 122
For T = 1 To 4
V = W - 122
For S = 1 To 4
BoardX(Board, T, S) = V: BoardY(Board, T, S) = U
V = V + 81
Next
U = U + 81
Next
BoardCenterX(Board) = W: BoardCenterY(Board) = X
Board = Board + 1
W = W + 363
Next
X = X + 363
Next
ElseIf Players = 3 Then
X = 186: Board = 1
For Z = 1 To 2
If Z = 1 Then R = 2: W = 186 Else R = 1: W = 367
For Y = 1 To R
U = X - 122
For T = 1 To 4
V = W - 122
For S = 1 To 4
BoardX(Board, T, S) = V: BoardY(Board, T, S) = U
V = V + 81
Next
U = U + 81
Next
BoardCenterX(Board) = W: BoardCenterY(Board) = X
Board = Board + 1
W = W + 363
Next
X = X + 363
Next
ElseIf Players = 2 Then
X = 186: W = 186: Board = 1
For Z = 1 To 2
U = X - 122
For T = 1 To 4
V = W - 122
For S = 1 To 4
BoardX(Board, T, S) = V: BoardY(Board, T, S) = U
V = V + 81
Next
U = U + 81
Next
BoardCenterX(Board) = W: BoardCenterY(Board) = X
Board = Board + 1
X = X + 363: W = W + 363
Next
Else
X = 367: W = 367: Board = 1
U = X - 122
For T = 1 To 4
V = W - 122
For S = 1 To 4
BoardX(Board, T, S) = V: BoardY(Board, T, S) = U
V = V + 81
Next
U = U + 81
Next
BoardCenterX(Board) = W: BoardCenterY(Board) = X
End If
' Draw Board
For Z = 1 To Players
V = BoardCenterX(Z): U = BoardCenterY(Z)
Line (V - 175, U - 175)-(V + 175, U + 175), 1, BF
For Y = 1 To 4
For X = 1 To 4
X1 = BoardX(Z, Y, X): X2 = BoardY(Z, Y, X): X3 = 0: X4 = 0: DrawCard X1, X2, X3, X4
Next
Next
Next
If Players = 1 GoTo SoloPlay
' Setup Table Locations
X = 1: V = 360
For Z = 1 To 4
U = 800
For Y = 1 To 3
TableX(X) = U: TableY(X) = V
X = X + 1: U = U + 81
Next
V = V + 81
Next
Color 15, 0: font& = _LoadFont(fontpath$, 16): _Font font&
Locate 45, 760: Print "Use Michael's Variation? Y or N";
GetVariation:
A$ = UCase$(InKey$): If A$ = "" GoTo GetVariation
If Asc(A$) = 27 And FullScreen = 0 Then FullScreen = -1: _FullScreen _SquarePixels , _Smooth Else If Asc(A$) = 27 Then FullScreen = 0: _FullScreen _Off
If A$ = "Y" Then Variation = 1 Else If A$ = "N" Then Variation = 0 Else GoTo GetVariation
' Add Starting Cursors for Michael's Variation
If Variation = 1 Then
For Z = 1 To Players
For R = 1 To 4
Color 15, 0: font& = _LoadFont(fontpath1$, 16): _Font font&
Locate 45, 750: Print " Place Starting Card on Your Board ";
V = BoardCenterX(Z): U = BoardCenterY(Z)
Line (V - 176, U - 176)-(V + 176, U + 176), 15, B
For Y = 1 To 4
V = BoardX(Z, Y, Y): U = BoardY(Z, Y, Y)
If BoardCard(Z, Y, Y) = 0 Then
Line (V - 39, U - 39)-(V + 39, U + 39), 15, B
Else
Line (V - 39, U - 39)-(V + 39, U + 39), 1, B
End If
Next
X1 = 881: X2 = 110: X3 = Z: X4 = CardColor(Z): DrawCard X1, X2, X3, X4
Color 15, 0: font& = _LoadFont(fontpath$, 25): _Font font&
_PrintString (833, 155), "Player " + Str$(Z)
Card = DeckCard(DeckCards): CardColor = DeckColor(DeckCards): DeckCards = DeckCards - 1
X1 = 881: X2 = 350: X3 = Card: X4 = CardColor(CardColor): DrawCard X1, X2, X3, X4
PlaceStartingCard:
Do While _MouseInput
For Y = 1 To 4
For X = 1 To 4
If BoardCard(Z, Y, X) = 0 And ((Y = 1 And X = 1) Or (Y = 2 And X = 2) Or (Y = 3 And X = 3) Or (Y = 4 And X = 4)) Then
If _MouseX > BoardX(Z, Y, X) - 40 And _MouseX < BoardX(Z, Y, X) + 40 And _MouseY > BoardY(Z, Y, X) - 40 And _MouseY < BoardY(Z, Y, X) + 40 And _MouseButton(1) = -1 Then
GoSub ReleaseButton: Line (841, 310)-(921, 390), 0, BF
X1 = BoardX(Z, Y, X): X2 = BoardY(Z, Y, X): X3 = Card: X4 = CardColor(CardColor): DrawCard X1, X2, X3, X4
Line (BoardX(Z, Y, X) - 39, BoardY(Z, Y, X) - 39)-(BoardX(Z, Y, X) + 39, BoardY(Z, Y, X) + 39), 1, B
Line (BoardCenterX(Z) - 176, BoardCenterY(Z) - 176)-(BoardCenterX(Z) + 176, BoardCenterY(Z) + 176), 0, B
BoardCard(Z, Y, X) = Card: BoardColor(Z, Y, X) = CardColor: GoTo EndPlaceCard
End If
End If
Next
Next
Loop
A$ = InKey$: If A$ <> "" Then If Asc(A$) = 27 And FullScreen = 0 Then FullScreen = -1: _FullScreen _SquarePixels , _Smooth Else If Asc(A$) = 27 Then FullScreen = 0: _FullScreen _Off
GoTo PlaceStartingCard
EndPlaceCard:
Next
Next
Else
' Get Hold Cards
For Z = 1 To 4
For Y = 1 To Players
HoldCard(Y, Z) = DeckCard(DeckCards): HoldColor(Y, Z) = DeckColor(DeckCards): DeckCards = DeckCards - 1
Next
Next
' Sort Hold Cards
For Z = 1 To Players
For Y = 1 To 4
LowCard = 100
For X = 1 To 4
If HoldCard(Z, X) < LowCard And Sorted(Z, X) = 0 Then LowCard = HoldCard(Z, X): CardColor = HoldColor(Z, X): T = X
Next
Sorted(Z, T) = 1: X1 = BoardX(Z, Y, Y): X2 = BoardY(Z, Y, Y): X3 = LowCard: X4 = CardColor(CardColor): DrawCard X1, X2, X3, X4
BoardCard(Z, Y, Y) = LowCard: BoardColor(Z, Y, Y) = CardColor
Next
Next
End If
Player = 1: Winner = 0
StartGame:
DrawPile = 0: Table = 0: Occupied = 0
' Draw Player Cursor
Line (BoardCenterX(Player) - 176, BoardCenterY(Player) - 176)-(BoardCenterX(Player) + 176, BoardCenterY(Player) + 176), 15, B
Line (BoardCenterX(Player) - 177, BoardCenterY(Player) - 177)-(BoardCenterX(Player) + 177, BoardCenterY(Player) + 177), 15, B
X1 = 881: X2 = 110: X3 = Player: X4 = CardColor(Player): DrawCard X1, X2, X3, X4
Color 15, 0: font& = _LoadFont(fontpath$, 25): _Font font&
_PrintString (833, 155), "Player " + Str$(Player)
' Display Deck
X1 = 821: X2 = 240: X3 = 100: X4 = 0: DrawCard X1, X2, X3, X4
Color 15, 0: font& = _LoadFont(fontpath1$, 16): _Font font&
' Draw a Card From the Deck If No Table Cards
If TableCards = 0 Then
DrawPile = 1: Table = 0: CardDrawn = 1
PlayCard = DeckCard(DeckCards): PlayColor = DeckColor(DeckCards): DeckCards = DeckCards - 1
X1 = 941: X2 = 240: X3 = PlayCard: X4 = CardColor(PlayColor): DrawCard X1, X2, X3, X4
Else
CardDrawn = 0
End If
Color 15, 0: font& = _LoadFont(fontpath1$, 16): _Font font&
GetInput:
'Draw Cursor Around Table If Not Empty
If TableCards > 0 And CardDrawn = 0 Then
Locate 43, 750: Print " Draw a Card From the Deck ";
Color 15, 0: Locate 45, 750: Print " or Play a Card From the Table ";
Line (756, 316)-(1006, 646), 15, B: Line (777, 196)-(865, 284), 15, B
Else
Locate 43, 750: Print " Play Card on Your Board ";
Locate 45, 750: Print " or Move Card to the Table ";
Line (777, 196)-(865, 284), 0, B: Line (756, 316)-(1006, 646), 15, B
End If
ChooseAPlay:
Do While _MouseInput
If TableCards > 0 Then
' Draw a Card From the Deck
If _MouseX > 777 And _MouseX < 865 And _MouseY > 196 And _MouseY < 284 And _MouseButton(1) = -1 Then
GoSub ReleaseButton: Line (777, 196)-(865, 284), 0, B: Line (756, 316)-(1006, 646), 15, B
PlayCard = DeckCard(DeckCards): PlayColor = DeckColor(DeckCards): DeckCards = DeckCards - 1: DrawPile = 1: Table = 0
X1 = 941: X2 = 240: X3 = PlayCard: X4 = CardColor(PlayColor): DrawCard X1, X2, X3, X4: GoTo PlayDeckCard
End If
' Choose a Card From the Table
If CardDrawn = 0 Then
For Z = 1 To TableCards
If _MouseX > TableX(Z) - 35 And _MouseX < TableX(Z) + 35 And _MouseY > TableY(Z) - 35 And _MouseY < TableY(Z) + 35 And _MouseButton(1) = -1 Then
GoSub ReleaseButton: Line (756, 316)-(1006, 646), 0, B: Line (777, 196)-(865, 284), 0, B
Line (TableX(Z) - 41, TableY(Z) - 41)-(TableX(Z) + 41, TableY(Z) + 41), 15, B
PlayCard = TableCard(Z): PlayColor = TableColor(Z): Position = Z: Table = 1: DrawPile = 0: GoTo PlayDeckCard
End If
Next
End If
End If
' Place Card on Table
If _MouseX > 756 And _MouseX < 1006 And _MouseY > 316 And _MouseY < 646 And _MouseButton(1) = -1 Then
GoSub ReleaseButton: Line (897, 196)-(985, 284), 0, BF: Line (756, 316)-(1006, 646), 0, B:
TableCards = TableCards + 1: TableCard(TableCards) = PlayCard: TableColor(TableCards) = PlayColor:
X1 = TableX(TableCards): X2 = TableY(TableCards): X3 = PlayCard: X4 = CardColor(PlayColor): DrawCard X1, X2, X3, X4: GoTo EndTurn
End If
' Place Card on Board
If DrawPile = 1 Then
For Z = 1 To 4
For Y = 1 To 4
If _MouseX > BoardX(Player, Z, Y) - 35 And _MouseX < BoardX(Player, Z, Y) + 35 And _MouseY > BoardY(Player, Z, Y) - 35 And _MouseY < BoardY(Player, Z, Y) + 35 And _MouseButton(1) = -1 Then
GoSub ReleaseButton: W = Player: Row = Z: Column = Y: Routine = 1: GoTo CheckBoardPosition
End If
Next
Next
End If
Loop
A$ = InKey$: If A$ <> "" Then If Asc(A$) = 27 And FullScreen = 0 Then FullScreen = -1: _FullScreen _SquarePixels , _Smooth Else If Asc(A$) = 27 Then FullScreen = 0: _FullScreen _Off
GoTo ChooseAPlay
PlayDeckCard:
Color 15, 0: font& = _LoadFont(fontpath1$, 16): _Font font&
Locate 43, 750: Print " Play Card on Your Board or ";
Locate 45, 750: Print " Choose a Card From the Table ";
ChoosePlay:
Do While _MouseInput
' Choose a Card From the Table
For Z = 1 To TableCards
If _MouseX > TableX(Z) - 35 And _MouseX < TableX(Z) + 35 And _MouseY > TableY(Z) - 35 And _MouseY < TableY(Z) + 35 And _MouseButton(1) = -1 Then
GoSub ReleaseButton: Line (TableX(Position) - 41, TableY(Position) - 41)-(TableX(Position) + 41, TableY(Position) + 41), 0, B
If Z = Position Then
Line (756, 316)-(1006, 646), 0, B: GoTo GetInput
Else
Line (756, 316)-(1006, 646), 0, B: Line (777, 196)-(865, 284), 0, B
Line (TableX(Z) - 41, TableY(Z) - 41)-(TableX(Z) + 41, TableY(Z) + 41), 15, B
PlayCard = TableCard(Z): PlayColor = TableColor(Z): Position = Z: Table = 1: DrawPile = 0: GoTo ChoosePlay
End If
End If
Next
' Place Card on Board
For Z = 1 To 4
For Y = 1 To 4
If _MouseX > BoardX(Player, Z, Y) - 35 And _MouseX < BoardX(Player, Z, Y) + 35 And _MouseY > BoardY(Player, Z, Y) - 35 And _MouseY < BoardY(Player, Z, Y) + 35 And _MouseButton(1) = -1 Then
GoSub ReleaseButton: W = Player: Row = Z: Column = Y: Routine = 1: GoTo CheckBoardPosition
End If
Next
Next
' Place Card on Table
If _MouseX > 756 And _MouseX < 1006 And _MouseY > 316 And _MouseY < 646 And _MouseButton(1) = -1 Then
GoSub ReleaseButton: Line (897, 196)-(985, 284), 0, BF: Line (756, 316)-(1006, 646), 0, B:
TableCards = TableCards + 1: TableCard(TableCards) = PlayCard: TableColor(TableCards) = PlayColor:
X1 = TableX(TableCards): X2 = TableY(TableCards): X3 = PlayCard: X4 = CardColor(PlayColor): DrawCard X1, X2, X3, X4: GoTo EndTurn
End If
Loop
A$ = InKey$: If A$ <> "" Then If Asc(A$) = 27 And FullScreen = 0 Then FullScreen = -1: _FullScreen _SquarePixels , _Smooth Else If Asc(A$) = 27 Then FullScreen = 0: _FullScreen _Off
GoTo ChoosePlay
CheckBoardPosition:
If BoardCard(Player, Row, Column) > 0 Then Occupied = 1: OldCard = BoardCard(Player, Row, Column): OldColor = BoardColor(Player, Row, Column)
GoSub CheckPosition
CanPlay = 0
If X1 = 1 And X2 = 1 And X3 = 1 And X4 = 1 Then
CanPlay = 1
Else
If Routine = 1 Then GoTo ChoosePlay
If Routine = 2 Then GoTo GetInput
End If
' Place Card on Board
If CanPlay = 1 Then
' Move Card to the Board
BoardCard(Player, Row, Column) = PlayCard: BoardColor(Player, Row, Column) = PlayColor
X1 = BoardX(Player, Row, Column): X2 = BoardY(Player, Row, Column): X3 = PlayCard: X4 = CardColor(PlayColor): DrawCard X1, X2, X3, X4
' Move Card from Draw Pile
If DrawPile = 1 Then Line (897, 196)-(985, 284), 0, BF
' Move Card from Table
If Table = 1 Then
Line (TableX(Position) - 41, TableY(Position) - 41)-(TableX(Position) + 41, TableY(Position) + 41), 0, BF
While Position < TableCards
TableCard(Position) = TableCard(Position + 1): TableColor(Position) = TableColor(Position + 1)
Line (TableX(Position + 1) - 41, TableY(Position + 1) - 41)-(TableX(Position + 1) + 41, TableY(Position + 1) + 41), 0, BF
X1 = TableX(Position): X2 = TableY(Position): X3 = TableCard(Position): X4 = CardColor(TableColor(Position)): DrawCard X1, X2, X3, X4
Position = Position + 1
Wend
TableCards = TableCards - 1
End If
' Move Old Card to Table
If Occupied = 1 Then
TableCards = TableCards + 1: TableCard(TableCards) = OldCard: TableColor(TableCards) = OldColor
X1 = TableX(TableCards): X2 = TableY(TableCards): X3 = OldCard: X4 = CardColor(OldColor): DrawCard X1, X2, X3, X4
End If
End If
EndTurn:
' Check for Winner
X = 0: W = Player
For Z = 1 To 4
For Y = 1 To 4
If BoardCard(Player, Z, Y) > 0 Then X = X + 1
Next
Next
If X = 16 Then
Color 15, 0: font& = _LoadFont(fontpath1$, 16): _Font font&
Locate 43, 750: Print " Player"; Player; "is the Winner! ";
Locate 45, 750: Print " Play Another Game? Y or N ";
GetYorN: A$ = UCase$(InKey$): If A$ = "" GoTo GetYorN
If Asc(A$) = 27 And FullScreen = 0 Then FullScreen = -1: _FullScreen _SquarePixels , _Smooth Else If Asc(A$) = 27 Then FullScreen = 0: _FullScreen _Off
If A$ = "Y" Then Run
If A$ = "N" Then System
GoTo GetYorN
End If
Line (BoardCenterX(Player) - 176, BoardCenterY(Player) - 176)-(BoardCenterX(Player) + 176, BoardCenterY(Player) + 176), 0, B
Line (BoardCenterX(Player) - 177, BoardCenterY(Player) - 177)-(BoardCenterX(Player) + 177, BoardCenterY(Player) + 177), 0, B
If Player = Players Then Player = 1 Else Player = Player + 1
GoTo StartGame
SoloPlay:
Color 15, 0: _PrintString (780, 70), "S O L O P L A Y"
' Check For Existing Players
If _FileExists("Lucky_Numbers.dat") Then
GoSub GetGameInfo: GoSub ChoosePlayer
Else
GoSub GetPlayerName: Players = 1: Level = 1: Name$(1) = Name$: level(1) = 1: GoSub StoreGameInfo
End If
DisplayPlayer:
' Display Player's Name
font& = _LoadFont(fontpath1$, 25): _Font font&
Color 2, 0: _PrintString (885 - (Len(Name$) * 18 / 2), 140), Name$
ChooseLevel:
' Display Board Setup
For Z = 1 To 4
For Y = 1 To 4
X1 = BoardX(Board, Z, Y): X2 = BoardY(Board, Z, Y): X3 = SoloBoard(Level, Z, Y): X4 = 6: DrawCard X1, X2, X3, X4
BoardCard(1, Z, Y) = SoloBoard(Level, Z, Y)
Next
Next
' Display Level Info
Color 3, 0: font& = _LoadFont(fontpath$, 85): _Font font&
_PrintString (190, 50), String$(20, 32)
If Level > 9 Then W = 190 Else W = 215
_PrintString (W, 50), "Level " + Str$(Level)
Color 15, 0: font& = _LoadFont(fontpath1$, 25): _Font font&
_PrintString (210, 160), Str$(SoloMoves(Level)) + " Moves to Complete Level"
' Display Previous / Next Level Arrows
Color 15, 0: font& = _LoadFont(fontpath1$, 30): _Font font&
_PrintString (30, 262), "Previous ": _PrintString (53, 300), "Level"
_PrintString (616, 262), "Next": _PrintString (610, 300), "Level"
If Level > 1 Then PrevColor = 2 Else PrevColor = 1
If Level < level(Player) Then NextColor = 2 Else NextColor = 1
PSet (130, 450), PrevColor: Draw "TA0U90TA120U90TA240U90": Paint (120, 405), PrevColor
PSet (610, 360), NextColor: Draw "TA0D90TA120D90TA240D90": Paint (620, 405), NextColor
Color 15, 0: font& = _LoadFont(fontpath1$, 20): _Font font&
Locate 34, 770: Print " Choose a Level ";
Locate 36, 770: Print " or Select an Option ";
' Display Level Menu
Color 15, 0: font& = _LoadFont(fontpath1$, 25): _Font font&
Locate 9, 800: Print " Choose Level"
X = 0
For Z = 1 To 3
Color 2, 0: Locate 11 + X, 800: Print Menu$(ChooseLevelMenu(Z))
Line (790, PlayerNameY(Z + 1))-(977, PlayerNameY(Z + 1) + 40), 15, B
X = X + 2
Next
GetLevelInput:
Do While _MouseInput
' Previous Arrow Input
If _MouseX > 35 And _MouseX < 145 And _MouseY > 345 And _MouseY < 465 Then Selected = 1 Else Selected = 0
If Selected And PrevColor = 2 Then
Line (35, 345)-(145, 465), 15, B
Else
Line (35, 345)-(145, 465), 0, B
End If
If _MouseButton(1) And Selected And PrevColor = 2 Then
GoSub ReleaseButton: Level = Level - 1: GoTo ChooseLevel
End If
' Next Arrow Input
If _MouseX > 595 And _MouseX < 705 And _MouseY > 345 And _MouseY < 465 Then Selected = 1 Else Selected = 0
If Selected And NextColor = 2 Then
Line (595, 345)-(705, 465), 15, B
Else
Line (595, 345)-(705, 465), 0, B
End If
If _MouseButton(1) And Selected And NextColor = 2 Then
GoSub ReleaseButton: Level = Level + 1: GoTo ChooseLevel
End If
' Button Input
For Z = 1 To 3
If _MouseX > 790 And _MouseX < 977 And _MouseY > PlayerNameY(Z + 1) - 8 And _MouseY < PlayerNameY(Z + 1) + 30 Then Selected = 1 Else Selected = 0
If Selected Then
Line (790, PlayerNameY(Z + 1))-(977, PlayerNameY(Z + 1) + 40), 5, B
Else
Line (790, PlayerNameY(Z + 1))-(977, PlayerNameY(Z + 1) + 40), 15, B
End If
If _MouseButton(1) And Selected Then
GoSub ReleaseButton
' Play Level
If Z = 1 Then Line (790, 170)-(977, 600), 0, BF: Move = 1: GoTo ChooseMove
' Choose Player
If Z = 2 Then Line (790, 110)-(977, 600), 0, BF: GoSub ChoosePlayer: GoTo DisplayPlayer
' End Game
If Z = 3 Then System
End If
Next
Loop
A$ = InKey$: If A$ <> "" Then If Asc(A$) = 27 And FullScreen = 0 Then FullScreen = -1: _FullScreen _SquarePixels , _Smooth Else If Asc(A$) = 27 Then FullScreen = 0: _FullScreen _Off
GoTo GetLevelInput
ChooseMove:
' Remove Level Arrows
Line (25, 260)-(160, 460), 0, BF: Line (600, 260)-(700, 460), 0, BF
font& = _LoadFont(fontpath1$, 25): _Font font&
Color 15.0: Locate 9, 800: Print " Choose Move "
X = 0
For Z = 1 To 5
Color 2, 0: Locate 11 + X, 800: Print Menu$(PlayLevelMenu(Z))
Line (790, PlayerNameY(Z + 1))-(977, PlayerNameY(Z + 1) + 40), 15, B
X = X + 2
Next
DisplayMove:
Color 6, 0: font& = _LoadFont(fontpath$, 55): _Font font&
_PrintString (270, 610), "Move " + Str$(Move)
Color 15, 0: font& = _LoadFont(fontpath1$, 20): _Font font&
Locate 34, 750: Print " Choose Card to Swap ";
Locate 36, 750: Print " or Select an Option ";
Color 2, 0: font& = _LoadFont(fontpath1$, 25): _Font font&
GetPlayLevelInput:
Do While _MouseInput
' Board Input
For Z = 1 To 4
For Y = 1 To 4
If _MouseX > BoardX(1, Z, Y) - 38 And _MouseX < BoardX(1, Z, Y) + 38 And _MouseY > BoardY(1, Z, Y) - 38 And _MouseY < BoardY(1, Z, Y) + 38 And _MouseButton(1) = -1 Then
GoSub ReleaseButton: Line (BoardX(1, Z, Y) - 38, BoardY(1, Z, Y) - 38)-(BoardX(1, Z, Y) + 38, BoardY(1, Z, Y) + 38), 15, B: Row1 = Z: Col1 = Y: GoTo ChooseNextCard
End If
Next
Next
' Button Input
For Z = 1 To 5
If _MouseX > 790 And _MouseX < 977 And _MouseY > PlayerNameY(Z + 1) - 8 And _MouseY < PlayerNameY(Z + 1) + 30 Then Selected = 1 Else Selected = 0
If Selected Then
Line (790, PlayerNameY(Z + 1))-(977, PlayerNameY(Z + 1) + 40), 5, B
Else
Line (790, PlayerNameY(Z + 1))-(977, PlayerNameY(Z + 1) + 40), 15, B
End If
If _MouseButton(1) And Selected Then
GoSub ReleaseButton
' Play Solution
If Z = 1 Then GoSub EndLevel: If EndTurn Then GoSub PlaySolution: GoTo DisplayMove Else GoTo DisplayMove
' Restart Level
If Z = 2 Then
GoSub EndLevel
If EndTurn Then
For X = 1 To 4
For Y = 1 To 4
X1 = BoardX(1, X, Y): X2 = BoardY(1, X, Y): X3 = SoloBoard(Level, X, Y): X4 = 6: DrawCard X1, X2, X3, X4
BoardCard(1, X, Y) = SoloBoard(levelevel, X, Y)
Next
Next
Move = 1
End If
GoTo DisplayMove
End If
' Choose Level
If Z = 3 Then GoSub EndLevel: If EndTurn Then Line (790, 110)-(977, 600), 0, BF: GoTo ChooseLevel Else GoTo DisplayMove
' Choose Player
If Z = 4 Then GoSub EndLevel: If EndTurn Then Line (790, 110)-(977, 600), 0, BF: GoSub ChoosePlayer: GoTo DisplayPlayer Else GoTo DisplayMove
' End Game
If Z = 5 Then GoSub EndLevel: If EndTurn Then System Else GoTo GetPlayLevelInput
End If
Next
Loop
A$ = InKey$: If A$ <> "" Then If Asc(A$) = 27 And FullScreen = 0 Then FullScreen = -1: _FullScreen _SquarePixels , _Smooth Else If Asc(A$) = 27 Then FullScreen = 0: _FullScreen _Off
GoTo GetPlayLevelInput
ChooseNextCard:
Color 15, 0: font& = _LoadFont(fontpath1$, 20): _Font font&
Locate 34, 750: Print " Choose the Next Card ";
Locate 36, 750: Print " or Select an Option ";
GetNextCard:
Do While _MouseInput
' Board Input
For Z = 1 To 4
For Y = 1 To 4
If _MouseX > BoardX(1, Z, Y) - 38 And _MouseX < BoardX(1, Z, Y) + 38 And _MouseY > BoardY(1, Z, Y) - 38 And _MouseY < BoardY(1, Z, Y) + 38 And _MouseButton(1) Then
GoSub ReleaseButton: Row2 = Z: Col2 = Y: X = 0
If Z = Row1 And Y = Col1 Then Line (BoardX(1, Row1, Col1) - 38, BoardY(1, Row1, Col1) - 38)-(BoardX(1, Row1, Col1) + 38, BoardY(1, Row1, Col1) + 38), 1, B: GoTo GetPlayLevelInput
If (Row1 = Row2 And (Col1 = Col2 + 1 Or Col1 = Col2 - 1)) Or (Col1 = Col2 And (Row1 = Row2 + 1 Or Row1 = Row2 - 1)) Then X = 1
If (Row1 = Row2 And ((Col1 = 1 And Col2 = 4) Or (Col1 = 4 And Col2 = 1))) Or (Col1 = Col2 And ((Row1 = 1 And Row2 = 4) Or (Row1 = 4 And Row2 = 1))) Then X = 1
If X = 1 Then Line (BoardX(1, Z, Y) - 38, BoardY(1, Z, Y) - 38)-(BoardX(1, Z, Y) + 38, BoardY(1, Z, Y) + 38), 15, B: GoTo CheckLevelComplete
End If
Next
Next
' Button Input
For Z = 1 To 5
If _MouseX > 790 And _MouseX < 977 And _MouseY > PlayerNameY(Z + 1) - 8 And _MouseY < PlayerNameY(Z + 1) + 30 Then Selected = 1 Else Selected = 0
If Selected Then
Line (790, PlayerNameY(Z + 1))-(977, PlayerNameY(Z + 1) + 40), 5, B
Else
Line (790, PlayerNameY(Z + 1))-(977, PlayerNameY(Z + 1) + 40), 15, B
End If
If _MouseButton(1) And Selected Then
GoSub ReleaseButton
' Play Solution
If Z = 1 Then
GoSub EndLevel
If EndTurn Then
Line (BoardX(1, Row1, Col1) - 38, BoardY(1, Row1, Col1) - 38)-(BoardX(1, Row1, Col1) + 38, BoardY(1, Row1, Col1) + 38), 1, B: GoSub PlaySolution: GoTo DisplayMove
Else
GoTo ChooseNextCard
End If
End If
' Restart Level
If Z = 2 Then
GoSub EndLevel
If EndTurn Then
For X = 1 To 4
For Y = 1 To 4
X1 = BoardX(1, X, Y): X2 = BoardY(1, X, Y): X3 = SoloBoard(Level, X, Y): X4 = 6: DrawCard X1, X2, X3, X4
BoardCard(1, X, Y) = SoloBoard(levelevel, X, Y)
Next
Next
Move = 1
End If
GoTo ChooseNextCard
End If
' Choose Level
If Z = 3 Then GoSub EndLevel: If EndTurn Then Line (790, 110)-(977, 600), 0, BF: GoTo ChooseLevel Else GoTo ChooseNextCard
' Choose Player
If Z = 4 Then GoSub EndLevel: If EndTurn Then Line (790, 110)-(977, 600), 0, BF: GoSub ChoosePlayer: GoTo DisplayPlayer Else GoTo ChooseNextCard
' End Game
If Z = 5 Then GoSub EndLevel: If EndTurn Then System Else GoTo ChooseNextCard
End If
Next
Loop
A$ = InKey$: If A$ <> "" Then If Asc(A$) = 27 And FullScreen = 0 Then FullScreen = -1: _FullScreen _SquarePixels , _Smooth Else If Asc(A$) = 27 Then FullScreen = 0: _FullScreen _Off
GoTo GetNextCard
CheckLevelComplete:
' Swap Chosen Cards
Swap BoardCard(1, Row1, Col1), BoardCard(1, Row2, Col2)
X1 = BoardX(1, Row1, Col1): X2 = BoardY(1, Row1, Col1): X3 = BoardCard(1, Row1, Col1): X4 = 6: DrawCard X1, X2, X3, X4
X1 = BoardX(1, Row2, Col2): X2 = BoardY(1, Row2, Col2): X3 = BoardCard(1, Row2, Col2): X4 = 6: DrawCard X1, X2, X3, X4
' Remove Cursors
Line (BoardX(1, Row1, Col1) - 38, BoardY(1, Row1, Col1) - 38)-(BoardX(1, Row1, Col1) + 38, BoardY(1, Row1, Col1) + 38), 1, B
Line (BoardX(1, Row2, Col2) - 38, BoardY(1, Row2, Col2) - 38)-(BoardX(1, Row2, Col2) + 38, BoardY(1, Row2, Col2) + 38), 1, B
' Check for Level Completed
If Move = SoloMoves(Level) Then
V = 0: W = 1
For Z = 1 To 4
For Y = 1 To 4
PlayCard = BoardCard(1, Z, Y): Row = Z: Column = Y: GoSub CheckPosition: If X1 = 1 And X2 = 1 And X3 = 1 And X4 = 1 Then V = V + 1
Next
Next
If V = 16 Then
Color 6, 0: font& = _LoadFont(fontpath$, 55): _Font font&
_PrintString (130, 610), "Level Completed!"
Color 15, 0: font& = _LoadFont(fontpath1$, 20): _Font font&
Locate 34, 750: Print "Level Succesfully Completed";
Locate 36, 750: Print " Press <ENTER> Next Level ";
GetENTER5:
A$ = InKey$: If A$ = "" GoTo GetENTER5
If Asc(A$) = 27 And FullScreen = 0 Then FullScreen = -1: _FullScreen _SquarePixels , _Smooth Else If Asc(A$) = 27 Then FullScreen = 0: _FullScreen _Off
If Asc(A$) <> 13 GoTo GetENTER5
Locate 34, 450: Print String$(30, 32);: Locate 36, 450: Print String$(50, 32);
Color 6, 0: font& = _LoadFont(fontpath$, 55): _Font font&
_PrintString (130, 610), String$(40, 32)
Move = 1: Level = Level + 1: level(Player) = Level: Name$(Player) = Name$
Color 3, 0: font& = _LoadFont(fontpath$, 85): _Font font&
_PrintString (190, 50), String$(20, 32)
If Level > 9 Then W = 190 Else W = 215
_PrintString (W, 50), "Level " + Str$(Level)
Color 15, 0: font& = _LoadFont(fontpath1$, 25): _Font font&
_PrintString (210, 160), Str$(SoloMoves(Level)) + " Moves to Complete Level"
For Z = 1 To 4
For Y = 1 To 4
BoardCard(1, Z, Y) = SoloBoard(Level, Z, Y)
X1 = BoardX(1, Z, Y): X2 = BoardY(1, Z, Y): X3 = SoloBoard(Level, Z, Y): X4 = 6: DrawCard X1, X2, X3, X4
Next
Next
GoSub StoreGameInfo
Else
Color 6, 0: font& = _LoadFont(fontpath$, 55): _Font font&
_PrintString (170, 610), " Level Failed! "
Color 15, 0: font& = _LoadFont(fontpath1$, 20): _Font font&
Locate 34, 750: Print " Level Failed! Try Again ";
Locate 36, 750: Print "Press <ENTER> Restart Level";
GetENTER6:
A$ = InKey$: If A$ = "" GoTo GetENTER6
If Asc(A$) = 27 And FullScreen = 0 Then FullScreen = -1: _FullScreen _SquarePixels , _Smooth Else If Asc(A$) = 27 Then FullScreen = 0: _FullScreen _Off
If Asc(A$) <> 13 GoTo GetENTER6
Color 15, 0: font& = _LoadFont(fontpath1$, 20): _Font font&
Locate 34, 750: Print String$(30, 32);: Locate 36, 750: Print String$(45, 32);: Move = 1
Color 3, 0: font& = _LoadFont(fontpath$, 85): _Font font&
_PrintString (190, 50), String$(20, 32)
If Level > 9 Then W = 190 Else W = 215
_PrintString (W, 50), "Level " + Str$(Level)
Color 3, 0: font& = _LoadFont(fontpath$, 55): _Font font&
_PrintString (170, 610), String$(30, 32)
For Z = 1 To 4
For Y = 1 To 4
BoardCard(1, Z, Y) = SoloBoard(Level, Z, Y)
X1 = BoardX(1, Z, Y): X2 = BoardY(1, Z, Y): X3 = SoloBoard(Level, Z, Y): X4 = 6: DrawCard X1, X2, X3, X4
Next
Next
End If
Else
Move = Move + 1
End If
GoTo DisplayMove
ReleaseButton:
Do While _MouseInput
If _MouseButton(1) = 0 Then Return
Loop
GoTo ReleaseButton
EndLevel:
Color 15, 0: font& = _LoadFont(fontpath1$, 20): _Font font&
Locate 34, 750: Print String$(40, 32);
Locate 36, 750: Print " End This Level? Y or N ";
EndLevelTurn:
A$ = UCase$(InKey$): If A$ = "" GoTo EndLevelTurn
If A$ = "Y" Then EndTurn = 1: Return
If A$ = "N" Then EndTurn = 0: Return
GoTo EndLevelTurn
ChoosePlayer:
Color 15, 0: font& = _LoadFont(fontpath1$, 20): _Font font&
Locate 34, 750: Print " Choose a Player or ";
Locate 36, 750: Print " Choose New Player ";
Color 15, 0: font& = _LoadFont(fontpath1$, 25): _Font font&
Locate 7, 800: Print "Choose Player";
X = 0: V = 0
For Z = 1 To Players + 1
Locate 9 + X, 800: Color 2, 0
If Z = Players + 1 Then Print "NEW PLAYER"; Else Print Name$(Z)
Line (790, PlayerNameY(Z))-(977, PlayerNameY(Z) + 40), 15, B
X = X + 2: V = V + 50
Next
GetPlayer:
Do While _MouseInput
If Players = 8 Then X = 8 Else X = Players + 1
For Z = 1 To X
If _MouseX > 790 And _MouseX < 977 And _MouseY > PlayerNameY(Z) And _MouseY < PlayerNameY(Z) + 40 Then Selected = 1 Else Selected = 0
If Selected Then
Line (790, PlayerNameY(Z))-(977, PlayerNameY(Z) + 40), 5, B
Else
Line (790, PlayerNameY(Z))-(977, PlayerNameY(Z) + 40), 15, B
End If
If _MouseButton(1) And Selected Then
GoSub ReleaseButton: Color 2, 0: font& = _LoadFont(fontpath$, 85): _Font font&
If Z = Players + 1 Then
GoSub GetPlayerName: Players = Players + 1: Name$(Players) = Name$: Player = Players: Level = 1: level(Players) = 1: GoSub StoreGameInfo
Else
Name$ = Name$(Z): Player = Z: Level = level(Z)
End If
length = Len(Name$): Line (790, 140)-(977, 600), 0, BF: Return
End If
Next
Loop
A$ = InKey$: If A$ <> "" Then If Asc(A$) = 27 And FullScreen = 0 Then FullScreen = -1: _FullScreen _SquarePixels , _Smooth Else If Asc(A$) = 27 Then FullScreen = 0: _FullScreen _Off
GoTo GetPlayer
GetPlayerName:
Color 15, 0: font& = _LoadFont(fontpath1$, 20): _Font font&
Locate 34, 750: Print String$(40, 32);: Locate 36, 750: Print String$(40, 32);
Color 15, 0: font& = _LoadFont(fontpath1$, 16): _Font font&
Locate 45, 750: Print "Enter Your Name: ";
Name$ = "_ ": Position = 1
PrintName: Locate 45, 880: Print String$(35, 32);: Locate 45, 880: Print Name$;
EnterLetter: A$ = UCase$(InKey$): If A$ = "" GoTo EnterLetter
If Asc(A$) = 27 And FullScreen = 0 Then FullScreen = -1: _FullScreen _SquarePixels , _Smooth Else If Asc(A$) = 27 Then FullScreen = 0: _FullScreen _Off
If Asc(A$) > 64 And Asc(A$) < 91 And Position < 11 Then Mid$(Name$, Position, 2) = A$ + "_": Position = Position + 1: GoTo PrintName
If Asc(A$) = 8 And Position > 1 Then Mid$(Name$, Position - 1, 2) = "_ ": Position = Position - 1: GoTo PrintName
If Asc(A$) = 13 Then
If Position < 10 Then Name$ = Left$(Name$, Position - 1)
Locate 45, 750: Print String$(70, 32);: Return
End If
GoTo EnterLetter
StoreGameInfo:
Open "Lucky_Numbers.dat" For Output As #1
Write #1, Players
For Z = 1 To 8
Print #1, Name$(Z)
Write #1, level(Z)
Next
Close #1
Return
GetGameInfo:
Open "Lucky_Numbers.dat" For Input As #1
Input #1, Players
For Z = 1 To 8
Line Input #1, Name$(Z)
Input #1, level(Z)
Next
Close #1
Return
CheckPosition:
X = 1: X1 = 0: X2 = 0: X3 = 0: X4 = 0
Up: If Row - X >= 1 Then
If BoardCard(W, Row - X, Column) = 0 Then X = X + 1: GoTo Up Else If PlayCard > BoardCard(W, Row - X, Column) Then X1 = 1
Else
X1 = 1
End If
X = 1
Dn: If Row + X <= 4 Then
If BoardCard(W, Row + X, Column) = 0 Then X = X + 1: GoTo Dn Else If PlayCard < BoardCard(W, Row + X, Column) Then X2 = 1
Else
X2 = 1
End If
X = 1
Lt: If Column - X >= 1 Then
If BoardCard(W, Row, Column - X) = 0 Then X = X + 1: GoTo Lt Else If PlayCard > BoardCard(W, Row, Column - X) Then X3 = 1
Else
X3 = 1
End If
X = 1
Rt: If Column + X <= 4 Then
If BoardCard(W, Row, Column + X) = 0 Then X = X + 1: GoTo Rt Else If PlayCard < BoardCard(W, Row, Column + X) Then X4 = 1
Else
X4 = 1
End If
Return
PlaySolution:
Color 15, 0: font& = _LoadFont(fontpath1$, 20): _Font font&
Locate 36, 750: Print String$(40, 32);
X = Level
For Y = 1 To SoloMoves(Level)
Color 6, 0: font& = _LoadFont(fontpath$, 55): _Font font&
_PrintString (270, 610), "Move " + Str$(Y)
Line (BoardX(1, Row1(X, Y), Col1(X, Y)) - 38, BoardY(1, Row1(X, Y), Col1(X, Y)) - 38)-(BoardX(1, Row1(X, Y), Col1(X, Y)) + 38, BoardY(1, Row1(X, Y), Col1(X, Y)) + 38), 15, B
Line (BoardX(1, Row2(X, Y), Col2(X, Y)) - 38, BoardY(1, Row2(X, Y), Col2(X, Y)) - 38)-(BoardX(1, Row2(X, Y), Col2(X, Y)) + 38, BoardY(1, Row2(X, Y), Col2(X, Y)) + 38), 15, B
_Delay 1
Swap BoardCard(1, Row1(X, Y), Col1(X, Y)), BoardCard(1, Row2(X, Y), Col2(X, Y))
X1 = BoardX(1, Row1(X, Y), Col1(X, Y)): X2 = BoardY(1, Row1(X, Y), Col1(X, Y)): X3 = BoardCard(1, Row1(X, Y), Col1(X, Y)): X4 = 6: DrawCard X1, X2, X3, X4
X1 = BoardX(1, Row2(X, Y), Col2(X, Y)): X2 = BoardY(1, Row2(X, Y), Col2(X, Y)): X3 = BoardCard(1, Row2(X, Y), Col2(X, Y)): X4 = 6: DrawCard X1, X2, X3, X4
Line (BoardX(1, Row1(X, Y), Col1(X, Y)) - 38, BoardY(1, Row1(X, Y), Col1(X, Y)) - 38)-(BoardX(1, Row1(X, Y), Col1(X, Y)) + 38, BoardY(1, Row1(X, Y), Col1(X, Y)) + 38), 1, B
Line (BoardX(1, Row2(X, Y), Col2(X, Y)) - 38, BoardY(1, Row2(X, Y), Col2(X, Y)) - 38)-(BoardX(1, Row2(X, Y), Col2(X, Y)) + 38, BoardY(1, Row2(X, Y), Col2(X, Y)) + 38), 1, B
_Delay 1
Next
Color 15, 0: font& = _LoadFont(fontpath1$, 20): _Font font&
Locate 36, 750: Print "Press <ENTER> to continue ";
GetENTER3:
A$ = InKey$: If A$ = "" GoTo GetENTER3
If Asc(A$) = 27 And FullScreen = 0 Then FullScreen = -1: _FullScreen _SquarePixels , _Smooth Else If Asc(A$) = 27 Then FullScreen = 0: _FullScreen _Off
If Asc(A$) <> 13 GoTo GetENTER3
For X = 1 To 4
For Y = 1 To 4
X1 = BoardX(1, X, Y): X2 = BoardY(1, X, Y): X3 = SoloBoard(Level, X, Y): X4 = 6: DrawCard X1, X2, X3, X4
BoardCard(1, X, Y) = SoloBoard(Level, X, Y)
Next
Next
Move = 1: GoTo DisplayMove
Return
Sub DrawCard (X1, X2, X3, X4)
fontpath$ = Environ$("SYSTEMROOT") + "\fonts\Arialbd.ttf"
Line (X1 - 34, X2 - 26)-(X1 - 34, X2 + 26), 2: Line (X1 + 34, X2 - 26)-(X1 + 34, X2 + 26), 2: Line (X1 - 26, X2 - 34)-(X1 + 26, X2 - 34), 2: Line (X1 - 26, X2 + 34)-(X1 + 26, X2 + 34), 2
Circle (X1 - 26, X2 - 26), 8, 2, 1.5, 3.0: Circle (X1 + 26, X2 - 26), 8, 2, 0, 1.6: Circle (X1 - 26, X2 + 26), 8, 2, 3.0, 4.8: Circle (X1 + 26, X2 + 26), 8, 2, 4.5,
If X3 > 0 Then
If X3 = 100 Then W = 1: V = 2 Else W = 2: V = 15
Paint (X1, X2), W, 2
Line (X1 - 25, X2 - 22)-(X1 - 25, X2 + 22), V: Line (X1 + 25, X2 - 22)-(X1 + 25, X2 + 22), V: Line (X1 - 22, X2 - 25)-(X1 + 22, X2 - 25), V: Line (X1 - 22, X2 + 25)-(X1 + 22, X2 + 25), V
Circle (X1 - 22, X2 - 22), 3, V, 1.5, 3.0: Circle (X1 + 22, X2 - 22), 3, V, 0, 1.6: Circle (X1 - 22, X2 + 22), 3, V, 3.0, 4.8: Circle (X1 + 22, X2 + 22), 3, V, 4.5, 0: Paint (X1, X2), V
If X3 = 100 Then
Paint (X1, X2), 15, 2: Color X4, 15: font& = _LoadFont(fontpath$, 10): _Font font&
Color 15, 2: _PrintString (808, 228), "Lucky": _PrintString (800, 242), "Numbers"
ElseIf X3 > 0 Then
Color X4, 15: font& = _LoadFont(fontpath$, 40): _Font font&
If X3 < 10 Then X = 20 Else X = 22
_PrintString (X1 - X, X2 - 15), Right$(Str$(X3), 2)
End If
End If
End Sub
Lucky Numbers (with Solo Play).7z (Size: 2.33 MB / Downloads: 33)