Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
114
Task/15-puzzle-game/Astro/15-puzzle-game.astro
Normal file
114
Task/15-puzzle-game/Astro/15-puzzle-game.astro
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
type Puzzle(var items: {}, var position: -1)
|
||||
|
||||
fun mainframe(puz):
|
||||
let d = puz.items
|
||||
print('+-----+-----+-----+-----+')
|
||||
print(d[1], d[2], d[3], d[4], first: '|', sep: '|', last: '|')
|
||||
print('+-----+-----+-----+-----+')
|
||||
print(d[5], d[6], d[7], d[8], first: '|', sep: '|', last: '|')
|
||||
print('+-----+-----+-----+-----+')
|
||||
print(d[9], d[10], d[11], d[12], first: '|', sep: '|', last: '|')
|
||||
print('+-----+-----+-----+-----+')
|
||||
print(d[13], d[14], d[15], d[16], first: '|', sep: '|', last: '|')
|
||||
print('+-----+-----+-----+-----+')
|
||||
|
||||
fun format(puz, ch):
|
||||
match ch.trim().length:
|
||||
1 => ' $ch '
|
||||
2 => ' $ch '
|
||||
0 => ' '
|
||||
|
||||
fun change(puz, to):
|
||||
let fro = puz.position
|
||||
for a, b in puz.items where b == puz.format(str i):
|
||||
to = a
|
||||
break
|
||||
|
||||
swap(puz.items[fro], :[to])
|
||||
puz.position = to;
|
||||
|
||||
fun buildboard(puz, difficulty):
|
||||
for i in 1..16:
|
||||
puz.items[i] = puz.format(str i)
|
||||
|
||||
var tmp = a
|
||||
for a, b in puz.items where b == ' 16 ':
|
||||
puz.items[a] = ' '
|
||||
tmp = a
|
||||
break
|
||||
|
||||
puz.position = tmp
|
||||
let diff = match difficulty:
|
||||
0 => 10
|
||||
1 => 50
|
||||
_ => 100
|
||||
|
||||
for i in 1..diff:
|
||||
let lst = puz.validmoves()
|
||||
let lst1 = []
|
||||
for j in lst:
|
||||
lst1.push! j.trim().int()
|
||||
puz.change(lst1[random(1, lst1.length - 1)])
|
||||
|
||||
fun validmoves(puz):
|
||||
match puz.position:
|
||||
6 | 7 | 10 | 11 =>
|
||||
puz.items[pos - 4], :[pos - 1], :[pos + 1], :[pos + 4]
|
||||
5 | 9 =>
|
||||
puz.items[pos - 4], :[pos + 4], :[pos + 1]
|
||||
8 | 12 =>
|
||||
puz.items[pos - 4], :[pos + 4], :[pos - 1]
|
||||
2 | 3 =>
|
||||
puz.items[pos - 1], :[pos + 1], :[pos + 4]
|
||||
14 | 15 =>
|
||||
puz.items[pos - 1], :[pos + 1], :[pos - 4]
|
||||
1 =>
|
||||
puz.items[pos + 1], :[pos + 4]
|
||||
4 =>
|
||||
puz.items[pos - 1], :[pos + 4]
|
||||
13 =>
|
||||
puz.items[pos + 1], :[pos - 4]
|
||||
16 =>
|
||||
puz.items[pos - 1], :[pos - 4]
|
||||
|
||||
fun mainframe(puz):
|
||||
var flag = false
|
||||
for a, b in puz.items:
|
||||
if b == ' ':
|
||||
pass
|
||||
else:
|
||||
flag = (a == b.trim().int())
|
||||
..
|
||||
return flag
|
||||
|
||||
let game = Puzzle()
|
||||
game.buildboard(
|
||||
int(input('Enter the difficulty : 0 1 2\n2 => highest 0=> lowest\n'))
|
||||
)
|
||||
game.mainframe()
|
||||
|
||||
print 'Enter 0 to exit'
|
||||
|
||||
loop:
|
||||
print 'Hello user:\nTo change the position just enter the no. near it'
|
||||
|
||||
var lst = game.validmoves()
|
||||
var lst1 = []
|
||||
for i in lst:
|
||||
lst1.push! i.trim().int()
|
||||
print(i.strip(), '\t', last: '')
|
||||
|
||||
print()
|
||||
|
||||
let value = int(input())
|
||||
if value == 0:
|
||||
break
|
||||
elif x not in lst1:
|
||||
print('Wrong move')
|
||||
else:
|
||||
game.change(x)
|
||||
|
||||
game.mainframe()
|
||||
if g.gameover():
|
||||
print 'You WON'
|
||||
break
|
||||
Loading…
Add table
Add a link
Reference in a new issue