Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
106
Task/2048/J/2048-1.j
Normal file
106
Task/2048/J/2048-1.j
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
NB. 2048.ijs script
|
||||
NB. =========================================================
|
||||
NB. 2048 game engine
|
||||
|
||||
require 'guid'
|
||||
([ 9!:1) _2 (3!:4) , guids 1 NB. randomly set initial random seed
|
||||
|
||||
coclass 'g2048'
|
||||
Target=: 2048
|
||||
|
||||
new2048=: verb define
|
||||
Gridsz=: 4 4
|
||||
Points=: Score=: 0
|
||||
Grid=: newnum^:2 ] Gridsz $ 0
|
||||
)
|
||||
|
||||
newnum=: verb define
|
||||
num=. 2 4 {~ 0.1 > ?0 NB. 10% chance of 4
|
||||
idx=. 4 $. $. 0 = y NB. indicies of 0s
|
||||
if. #idx do. NB. handle full grid
|
||||
idx=. ,/ ({~ 1 ? #) idx NB. choose an index
|
||||
num (<idx)} y
|
||||
else. return. y
|
||||
end.
|
||||
)
|
||||
|
||||
mskmerge=: [: >/\.&.|. 2 =/\ ,&_1
|
||||
mergerow=: ((* >:) #~ _1 |. -.@]) mskmerge
|
||||
scorerow=: +/@(+: #~ mskmerge)
|
||||
|
||||
compress=: -.&0
|
||||
toLeft=: 1 :'4&{.@(u@compress)"1'
|
||||
toRight=: 1 : '_4&{.@(u@compress&.|.)"1'
|
||||
toUp=: 1 : '(4&{.@(u@compress)"1)&.|:'
|
||||
toDown=: 1 : '(_4&{.@(u@compress&.|.)"1)&.|:'
|
||||
|
||||
move=: conjunction define
|
||||
Points=: +/@, v Grid
|
||||
update newnum^:(Grid -.@-: ]) u Grid
|
||||
)
|
||||
|
||||
noMoves=: (0 -.@e. ,)@(mergerow toRight , mergerow toLeft , mergerow toUp ,: mergerow toDown)
|
||||
hasWon=: Target e. ,
|
||||
|
||||
eval=: verb define
|
||||
Score=: Score + Points
|
||||
isend=. (noMoves , hasWon) y
|
||||
msg=. isend # 'You lost!!';'You Won!!'
|
||||
if. -. isend=. +./ isend do.
|
||||
Points=: 0
|
||||
msg=. 'Score is ',(": Score)
|
||||
end.
|
||||
isend;msg
|
||||
)
|
||||
|
||||
showGrid=: echo
|
||||
|
||||
NB. =========================================================
|
||||
NB. Console user interface
|
||||
|
||||
g2048Con_z_=: conew&'g2048con'
|
||||
|
||||
coclass 'g2048con'
|
||||
coinsert 'g2048'
|
||||
|
||||
create=: verb define
|
||||
echo Instructions
|
||||
startnew y
|
||||
)
|
||||
|
||||
destroy=: codestroy
|
||||
quit=: destroy
|
||||
|
||||
startnew=: update@new2048
|
||||
|
||||
left=: 3 :'mergerow toLeft move (scorerow toLeft)'
|
||||
right=: 3 :'mergerow toRight move (scorerow toRight)'
|
||||
up=: 3 :'mergerow toUp move (scorerow toUp)'
|
||||
down=: 3 :'mergerow toDown move (scorerow toDown)'
|
||||
|
||||
update=: verb define
|
||||
Grid=: y NB. update global Grid
|
||||
'isend msg'=. eval y
|
||||
echo msg
|
||||
showGrid y
|
||||
if. isend do. destroy '' end.
|
||||
empty''
|
||||
)
|
||||
|
||||
Instructions=: noun define
|
||||
=== 2048 ===
|
||||
Object:
|
||||
Create the number 2048 by merging numbers.
|
||||
|
||||
How to play:
|
||||
When 2 numbers the same touch, they merge.
|
||||
- move numbers using the commands below:
|
||||
right__grd ''
|
||||
left__grd ''
|
||||
up__grd ''
|
||||
down__grd ''
|
||||
- quit a game:
|
||||
quit__grd ''
|
||||
- start a new game:
|
||||
grd=: g2048Con ''
|
||||
)
|
||||
20
Task/2048/J/2048-2.j
Normal file
20
Task/2048/J/2048-2.j
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
grd=: g2048Con ''
|
||||
|
||||
Score is 0
|
||||
0 0 0 2
|
||||
0 2 0 0
|
||||
0 0 0 0
|
||||
0 0 0 0
|
||||
right__grd ''
|
||||
Score is 0
|
||||
0 0 0 2
|
||||
0 0 0 2
|
||||
0 0 0 0
|
||||
0 0 0 2
|
||||
down__grd ''
|
||||
Score is 4
|
||||
0 0 0 0
|
||||
0 0 0 0
|
||||
0 0 4 4
|
||||
0 0 0 2
|
||||
...
|
||||
Loading…
Add table
Add a link
Reference in a new issue