Snake: Difference between revisions
Content added Content deleted
(J) |
|||
Line 2,105: | Line 2,105: | ||
(x,y) = w^.food & head |
(x,y) = w^.food & head |
||
in (a-x)^2 + (b-y)^2</lang> |
in (a-x)^2 + (b-y)^2</lang> |
||
=={{header|J}}== |
|||
Needs j9 qt: |
|||
Use WASD to move. Relies on keyboard repeat for traversing the board. |
|||
<lang J>require'ide/qt/gl2' |
|||
coinsert 'jgl2' |
|||
open=: wd@{{)n |
|||
pc s closeok; |
|||
cc n isidraw; |
|||
set n wh 400 400; |
|||
pshow; |
|||
}} |
|||
snake=: {{ |
|||
open'' |
|||
snake=: 10 10,10 11,:10 12 |
|||
newdot'' |
|||
draw'' |
|||
}} |
|||
newdot=: {{ |
|||
dot=: ({~ ?@#) snake -.~ ,/(#: i.)40 40 |
|||
}} |
|||
s_n_char=: {{ |
|||
select. {.toupper sysdata |
|||
case. 'W' do. move 0 _1 |
|||
case. 'A' do. move _1 0 |
|||
case. 'S' do. move 0 1 |
|||
case. 'D' do. move 1 0 |
|||
end. |
|||
}} |
|||
move=: {{ |
|||
head=. y+{.snake |
|||
tail=. }: snake |
|||
if. head e. snake do. head gameover'' return. end. |
|||
if. _1 e. head do. (0>.head) gameover'' return. end. |
|||
if. 1 e. 40 <: head do. (39<.head) gameover'' return. end. |
|||
if. dot -: head do. |
|||
snake=: dot,snake |
|||
newdot'' |
|||
else. |
|||
snake=: head,tail |
|||
end. |
|||
draw'' |
|||
}} |
|||
draw=: {{ |
|||
glclear'' |
|||
glbrush glrgb 0 0 255 |
|||
glrect 10*}.snake,"1(1 1) |
|||
glbrush glrgb 0 255 0 |
|||
glrect 10*({.snake),1 1 |
|||
glbrush glrgb 255 0 0 |
|||
glrect 10*dot,1 1 |
|||
glpaint'' |
|||
EMPTY |
|||
}} |
|||
gameover=: {{ |
|||
if. 1<#snake do. |
|||
echo 'game over' |
|||
draw'' |
|||
glbrush glrgb 255 255 0 |
|||
glrect 10*x,1 1 |
|||
end. |
|||
snake=: ,:_ _ |
|||
}}</lang> |
|||
=={{header|Java}}== |
=={{header|Java}}== |