Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Abi Pascal'is märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
JOKKER666
HV veteran
JOKKER666

liitunud: 21.09.2002




sõnum 21.03.2009 08:25:09 Abi Pascal'is vasta tsitaadiga

Tere, saaks äkki nõu Pascalis.
Probleem järgmine. Vaja oleks et programm, ei jääks ootama klahvi vajutust vaid jätkuks, kui seda ei tule. Pm tegu pisikese mänguga, harjutamise mõttes.
Käsu koht ise on praegu selline:

a:=readkey;
if a=#77 then x:=x+1;
if a=#75 then x:=x-1;
if a=#32 then lask;

Praegu jääb ootama a väärtust ja kogu mäng peatub kuni klahvi vajutatakse. Kuidas saab nii, et klahvi vajutus poleks kohustuslik.
Kommentaarid: 47 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 42
tagasi üles
vaata kasutaja infot saada privaatsõnum
mark11
HV vaatleja

liitunud: 28.01.2006




sõnum 21.03.2009 09:40:41 vasta tsitaadiga

ei ole küll pascaliga tegelenenud aga natukese googledamisega tuli see välja,et

Under LinCRT the input and output can be performed with standard ReadLn, Write, and WriteLn procedures.

Note: due to some problems with underlying ncurses cursor-positioning handling it is recommended to call every ReadLn procedure in its own window.
Single characters can be put to screen with PutChar and PutCharXY procedures. When using the last two routines note that they don't change the current cursor position. The are also two functions: GetKey and ReadKey that handle input on per-character basis. These functions do not echo incoming characters on the screen. The ReadKey function is introduced for CRT compatibility. The GetKey function is an extended variant of ReadKey. This function allows for mouse support.

The GetKey and ReadKey functions are blocking. In order to do a non-blocking input with these functions use the non-blocking KeyPressed function as shown below:

while ... do // some control loop

begin

...

if KeyPressed then Key := GetKey;

...

end;



samuti sellised asjad nagu threadid aitaks sind..

http://wiki.freepascal.org/Multithreaded_Application_Tutorial#Do_you_need_multithreading.3F
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
Ho Ho
HV Guru
Ho Ho

liitunud: 16.02.2002




sõnum 24.03.2009 14:36:02 vasta tsitaadiga

Pascaliga tegutsesin viimati jämedalt 8 a tagasi seega võin veidi puusse panna icon_smile.gif

Ise tegin mängu laadseid klahvidega juhitavaid asju üldjuhul selliselt, et readkey'le eelnes alati if KeyPressed. Keypressed lihtsalt ütles et kas mõnele klahvile vajutati või ei, kui jah siis readkey'ga sai vastava vajutuse välja lugeda. Kui ei vajutatud siis jätkus programmi töö ilma millegi taga ootmata.

_________________
Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity"
Kommentaarid: 106 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 86
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 24.03.2009 20:37:22 vasta tsitaadiga

Ei ole Pascaliga tegelenud. Kood mille annan on Qbasicus, kuid uuri, kas Pascalis ei saa vajutaqtud klahvi koodi lugeda. INKEY$ loeb vajutusel klahvi koodi, kuid ei peata programmi. Hiljem saad juba vaadelda, millise koodi said ja sellega edasi tegutseda.

DO

q$ = INKEY$: la = LEN(q$)
IF la = 1 THEN k = ASC(q$)
IF la = 2 THEN k = ASC(RIGHT$(q$, 1))
REM LOCATE 2, 2: PRINT k

IF la = 0 THEN k = 0
IF k = 27 THEN END
IF k = 75 THEN GOSUB 35
IF k = 77 THEN GOSUB 35
IF k = 72 THEN ac = ac + .1
IF k = 80 THEN ac = ac - .1
IF ac > .6 THEN ac = .6
IF ac < .1 THEN ac = .1
LOOP

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
marqs
HV veteran
marqs

liitunud: 06.12.2001




sõnum 25.03.2009 21:06:39 vasta tsitaadiga

Mõnikord on abiks juba kellegi valmis tehtud vigurit uurida. Näiteks igat masti Pascalis kirjutet' ussimänge peaks olema rohem, kui küll.

http://www.codepedia.com/1/First-Steps-Pascal-Graphics - Kordab suuresti kõike, mida siin juba öeldud, aga rohkemate sõnade ja (eeldatavasti) töötavate koodinäidetega. Loo järg pakub ka ehk huvi.

_________________
0xDEAD
0xBEEF
Kommentaarid: 28 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 27
tagasi üles
vaata kasutaja infot saada privaatsõnum
JOKKER666
HV veteran
JOKKER666

liitunud: 21.09.2002




sõnum 25.03.2009 21:16:50 vasta tsitaadiga

Keypressed sobib hästi., sain sellega asja toimima.
Muidugi nuppu vajutades teeb jõnksu sisse mängu ja 2 nuppu korraga ei tunnista. Aga küll jõuab.
Kommentaarid: 47 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 42
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Abi Pascal'is
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.