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}}==