Robots: Difference between revisions

Content added Content deleted
(Added Wren header.)
(J)
Line 18: Line 18:


See [[Robots/Go]].
See [[Robots/Go]].

=={{header|J}}==

<lang J>require'~addons/ide/qt/gl2.ijs'
coinsert'jgl2'

move_handler=: {{
if. 'char'-:systype do.
wd'timer 0'
select.{.tolower sysdata
case.'y'do.move _1 _1
case.'k'do.move 0 _1
case.'u'do.move 1 _1
case.'h'do.move _1 0
case.' 'do.move 0 0
case.'l'do.move 1 0
case.'b'do.move _1 1
case.'j'do.move 0 1
case.'n'do.move 1 1
case.'w'do.giveup''
case.'t'do.teleport''
end.
end.
}}

Directions=:({.~ i.&'0'){{)n
Directions:

y k u
\|/
h- -l
/|\
b j n

Commands:

w: wait for end
t: teleport

Legend:

+: robot
*: junk heap
@: you

Score: 0
}}

color=: [ gltextcolor@glrgb@{{<.0.5+255*y}}
at=: (gltext@[ [ gltextxy@])"1

showscore=: {{
t=. ];._2 LF,~Directions,":y
t at"_1] 1130,.14*2+i.#t
botrow=. I. '+' e."1 >t
'+' at 1130,14*2+botrow color 1 0 0
'*' at 1130,14*3+botrow color 1 0 1*0.5
'@' at 1130,14*4+botrow color 0 1 0.75
}}

dim=: 110 72
has=: +./ .=
initlevel=: {{
game_handler=: move_handler
junk=:(#~ has&(dim-1) +. has&0)dim#:i.*/dim
'player bots'=: ({.;}.) 1+(dim-2) #: (1+10*y) ? */dim-2
drawboard level=: y
}}

drawboard=: {{
glclear''
glfont '"courier" 12'
showscore score color 0 0 0
'+' at 10*bots color 1 0 0
'*' at 10*junk color 1 1 0*0.5
'@' at 10*player color 0 1 0*0.75
glpaint''
}}

move=: {{
player=: player+y
'hazards crashes'=.(~.;1<#/.~) (2#junk),bots-*bots-"1 player
junk=: hazards#~crashes
bots=: hazards#~crashes=0
score=: level#.5 5,-#bots
drawboard''
if.player e.junk,bots do.lose''
elseif.0=#bots do.win'' end.
}}

query_handler=: {{
game_handler=: m&{{
if.'char'-:systype do.
wd'timer 0'
x`]@.('ny'i.{.sysdata)0
end.
}}
}}

lose=: {{
wd'timer 0'
glfont '"courier" 96'
game_handler=: quit`start query_handler
'Game Over' at 320 320 color 1 0 0
glfont '"courier" 24'
'Start over? (y/n)' at 480 480 color 0 0 0
}}

win=: {{
glfont '"courier" 96'
game_handler=: quit`advance query_handler
'You Win' at 320 320 color 0 1 0
glfont '"courier" 24'
'Continue? (y/n)' at 480 480 color 0 0 0
}}

teleport=: {{
move (dim#:?*/dim)-player
}}

start=: {{
score=: 0
initlevel 1
}}

advance=: {{
initlevel level+1
}}

giveup=: {{
sys_timer_z_=: {{
move_base_ 0 0
}}
wd'timer 100'
}}

wd {{)n
pc game closeok;
setp wh 1280 720;
cc chase isidraw flush;
pshow;
}}
start''</lang>


=={{header|Java}}==
=={{header|Java}}==