Computer Science Canada

Input keydown functions

Author:  Regole [ Fri Jan 09, 2004 1:15 pm ]
Post subject:  Input keydown functions

we are all familiar with the popular code for recieving input from the keyboard:
code:

setscreen ("offscreenonly")
var chars : array char of boolean
var x, y, x1, y1,col, w1 : int
w1 := Window.Open ("title:Game test 01,graphics:1024,768,position:0,0")
x := 500
y := 500
x1:=5
y1:=5
col:=16
loop 
    Input.KeyDown (chars)
    if chars (KEY_UP_ARROW) then
        y := y + 3
    elsif chars (KEY_RIGHT_ARROW) then
        x := x + 3
    elsif chars (KEY_LEFT_ARROW) then
        x := x - 3
    elsif chars (KEY_DOWN_ARROW) then
        y := y -3
        elsif chars ('g') then
        x1:=x1+2
        y1:=y1+2
        elsif chars ('d') then
        x1:=x1-2
        y1:=y1-2       
        elsif chars ('c') then
        col:=col+1
        elsif chars ('s') then
        col:=col-1       
    end if
    if col<1 then
        col:=256
        elsif col>256 then
        col:=1
        end if
    drawfilloval (x, y, x1, y1, col)
    View.Update
end loop

however i am experiencing a few problems, i am trying to make a simple circle move using this,i made it smooth using view.update, however the problem is it is not redrawing properly,and the result is a very nice etch-a sketch program...but its not what i want.does anyone know what i'm missing here?also how might i go about enabling diagonal movement?
thanks for your help.

Author:  DanShadow [ Fri Jan 09, 2004 2:44 pm ]
Post subject: 

Here, use this:
code:

var x, y : int := 200
var chars : array char of boolean
loop
    setscreen ("offscreenonly")
    View.Update
    Draw.FillBox (0, 0, maxx, maxy, 0)
    Draw.FillOval (x, y, 10, 10, 12)
    Input.KeyDown (chars)
    if chars ('8') then
        y := y + 3
    elsif chars ('2') then
        y := y - 3
    elsif chars ('4') then
        x := x - 3
    elsif chars ('6') then
        x := x + 3
    elsif chars ('7') then
        x := x - 3
        y := y + 3
    elsif chars ('9') then
        x := x + 3
        y := y + 3
    elsif chars ('3') then
        x := x + 3
        y := y - 3
    elsif chars ('1') then
        x := x - 3
        y := y - 3
    end if
end loop

And Your welcome. Very Happy
[Use the number pad to the right of your key board to move.]


: