Remapping controls to be used with Input.KeyDown
| Author |
Message |
Mongoose

|
Posted: Sat May 27, 2006 8:01 pm Post subject: Remapping controls to be used with Input.KeyDown |
|
|
I'm making a pong game with some extra features such as items and remappable controls. The controls are easy enough to reset if I use the getch command, but the game runs better using Input.KeyDown (it isn't smooth when you hold down a key with the getch command). Is there any way to let Input.KeyDown recognize a key that is a variable?
I tried:
| code: | Input.KeyDown (button)
if button (p1Up) then
y (1) := y (1) + 10
end if
|
where p1Up was a string (1) that you could set before. I get the error "Array subscript out of range". Is it not possible to do this sort of thing, or am I overlooking something stupid?
I would appreciate any help or advice. |
|
|
|
|
 |
Sponsor Sponsor

|
|
 |
MysticVegeta

|
Posted: Sat May 27, 2006 8:06 pm Post subject: (No subject) |
|
|
Sure there is a way!!!
Well you see, the argument for the Input.KeyDown array is either a char or "KEY_WHATEVER" (without the quotes) so there are various scenerios possible, for eg:
| code: | var key : char := 't'
var key2 := KEY_ENTER
var chars : array char of boolean
loop
Input.KeyDown (chars)
locate (1, 1)
if chars (key) then
put key, " Pressed "
elsif chars (key2) then
put "Enter Pressed "
end if
end loop
|
|
|
|
|
|
 |
Cervantes

|
Posted: Sat May 27, 2006 8:30 pm Post subject: (No subject) |
|
|
MysticVegeta: I think he knows that much. The point is not to hardcode the values for the keys, as you have done.
Mongoose: You can use getch (or better yet, getchar) for that one section of the code only where you set the controls, then use Input.KeyDown for the rest of the program.
| code: |
put "Please enter a key for Player 1: " ..
var p1Up := getchar
delay (100)
var keys : array char of boolean
loop
locate (1, 1)
Input.KeyDown (keys)
if keys (p1Up) then
put "Player 1 is moving upwards."
else
put ""
end if
end loop
|
|
|
|
|
|
 |
MysticVegeta

|
Posted: Sat May 27, 2006 8:53 pm Post subject: (No subject) |
|
|
| If you read his post, he was using the type string(1) for p1Up which obviously doesnt work since string(1) not= char. His point from my opinion was that he was trying to pass a variable into Input.KeyDown |
|
|
|
|
 |
Mongoose

|
Posted: Sat May 27, 2006 9:19 pm Post subject: (No subject) |
|
|
| Ah, excellent. It works. The problem was simple; the string (1)s needed to be chars, as you said. Thanks very much for the help guys, cripes that was quick. |
|
|
|
|
 |
|
|