69 lines
1.7 KiB
Text
69 lines
1.7 KiB
Text
#difficulty=10 ;higher is harder
|
|
#up="u"
|
|
#down="d"
|
|
#left="l"
|
|
#right="r"
|
|
OpenConsole("15 game"):EnableGraphicalConsole(1)
|
|
Global Dim Game.i(3,3)
|
|
Global hole.point
|
|
|
|
Procedure NewBoard()
|
|
num.i=0
|
|
For j=0 To 3
|
|
For i=0 To 3
|
|
Game(i,j)=num
|
|
num+1
|
|
Next i
|
|
Next j
|
|
EndProcedure
|
|
Procedure.s displayBoard()
|
|
For j=0 To 3
|
|
For i=0 To 3
|
|
ConsoleLocate(i,j)
|
|
If Game(i,j)=0:Print(" "):Continue:EndIf
|
|
Print(Hex(Game(i,j)))
|
|
Next i
|
|
Next j
|
|
PrintN("")
|
|
Print("Your Choice Up :"+#up+", Down :"+#down+", Left :"+#left+" Or Right :"+#right+" ")
|
|
Repeat
|
|
keypress$=Inkey()
|
|
Until keypress$<>""
|
|
keypress$=LCase(keypress$)
|
|
ProcedureReturn keypress$
|
|
EndProcedure
|
|
Procedure UpdateBoard(key$)
|
|
If key$=#up And hole\y<3
|
|
Swap game(hole\x,hole\y),game(hole\x,hole\y+1):hole\y+1
|
|
ElseIf key$=#down And hole\y
|
|
Swap game(hole\x,hole\y),game(hole\x,hole\y-1):hole\y-1
|
|
ElseIf key$=#left And hole\x<3
|
|
Swap game(hole\x,hole\y),game(hole\x+1,hole\y):hole\x+1
|
|
ElseIf key$=#right And hole\x
|
|
Swap game(hole\x,hole\y),game(hole\x-1,hole\y):hole\x-1
|
|
EndIf
|
|
EndProcedure
|
|
Procedure TestGameWin()
|
|
For j=0 To 3
|
|
For i=0 To 3
|
|
num+1
|
|
If game(i,j)=num:win+1:EndIf
|
|
Next i
|
|
Next j
|
|
If win=15:ProcedureReturn 1:EndIf
|
|
EndProcedure
|
|
Procedure ShuffleBoard(difficulty.i)
|
|
Dim randomKey$(3)
|
|
randomkey$(0)=#up:randomkey$(1)=#down:randomkey$(2)=#left:randomkey$(3)=#right
|
|
For i=1 To difficulty
|
|
UpdateBoard(randomKey$(Random(3)))
|
|
Next i
|
|
EndProcedure
|
|
NewBoard()
|
|
ShuffleBoard(#difficulty)
|
|
Repeat
|
|
choice$=displayBoard()
|
|
UpdateBoard(choice$)
|
|
Until TestGameWin()
|
|
Print("Won !")
|
|
CloseConsole()
|