La ReadKey/Keypressed sono più che sufficenti. Li ho usati un sacco di
volte nei giochi. Ma tu chiami la ReadKey solo ed esclusivamente quando
un tasto è premuto?
ovvero fai qualcosa del genere
Repeat
If KeyPressed Then Begin
Ch:=ReadKey;
If Ch = #0 Then Snake.ChangeDir(WhatDirection(ReadKey));
End;
Snake.Move;
Until (Ch = Key_Esc) Or Error;
?
Ricordati che i tasti direzionali ( Freccia su freccia giu ecc ) hanno
bisogno di 2 chiamate a ReadKey perché la prima volta ritornano 0.
--
Il Razziatore,
"Lo sviluppo di una nazione si misura anche dallo stato della sua rete
ferroviaria". Camillo Benso Conte di Cavour
"Per tutto quanto non previsto nel presente regolamento il capostazione
deve usare senno e ponderatezza." Regolamento d'esercizio FS
-----------------------------------------------
MSN : IlRazz...@netscape.net
ICQ : 67552596
Yhaoo : Razziatore82
-----------------------------------------------
Founder of MediaPlayer Project
http://mpp.iwebland.com
Esatto io utilizzo circa quei comandi.
Ho gia fatto il gioco Snake, e per quello sono sufficienti, perchè una volta
che imposti la direzione, il verme la mantiene, ma per il pacman, bisogna
anche fare delle curve o muoversi tenendo premuto il tasto. Per esempio, con
il readkey se tengo premuta la freccia in alto, il pacman, fa un passo verso
l'alto, si ferma un secondo, e poi parte ad una buona velocità, mentre in
teoria dovrebbe partire subito. Pensavo che qualche procedura in assembly
potesse venirmi in soccorso.
Paolo
> Pensavo che qualche procedura in assembly potesse venirmi in soccorso.
Il problema è che le procedure standard (keypressed e readkey) leggono
l'input che arriva attraverso il sistema operativo e quindi i parametri
che settano la velocità di ripetizione dei tasti.
Con l'assembler puoi scavalcare il SO e leggere direttamente gli eventi da
tastiera, tipo tasto-premuto o tasto-sollevato, senza attese o pause.
Prova a dare un'occhiata qua ad esempio:
- http://www.programmersheaven.com/zone24/cat579/index.htm
--
Dreadnaut - http://dreadnaut.altervista.org/
(Life would be easier if I had the source code)