![]() |
[C++]Soort ligtkrant werkt alleen tijdens het debuggen
Ik ben bezig met het maken van snake in console mode omdat ik me een beetje verveel, maar ik loop nu tegen een probleem. Ik wil dat de speler (in dit geval nog maar bestaande uit 1 char) van links naar rechts beweegt als er geen toetsen ingedrukt zijn. Ik heb nu het volgende:
Code:
bool updateMove() Code:
void dontChangeDir(OBJECT *player) Als ik dit echter gewoon uitvoer(gecompiled in debug mode dus, niet in release mode) komt de A niet verder dan "hokje" 2, dus xPos 1. Iemand een idee wat ik fout doe? edit: Inmiddels heb ik gevonden waarom hij niet loopt, hij wacht op invoer van toetsenbord bij ReadConsoleInput(). Als ik de derde param van die funcite op 0 zet, dan begint mn A-tje te lopen, maar leest hij geen toetsen meer in. Met andere woorden, besturing wordt dan onmogelijk. Heeft iemand suggesties van hoe ik dit op kan lossen? Dus dat hij blijft lopen, maar tegerlijkertijd toch controleert of er invoer van het toetsenbord is. Is threads te complex of is dat de enige oplossing? |
kweenie zeker (kdoe al een hele tijd niet zoveel op dit gebied en mn C was al niet al te best, deed altijd meer met java), maar is dr niet gewoon een functie die de inhoud van de keyboard buffer doorgeeft ? get_key() of zoiets ?
|
ja dat is dus juist t probleem volgens mij, hij moet eerst lezen om het in de buffer te zetten, en hij gaat niet verder tijdens het lezen van de toetsenbord, hij wacht totdat er iets is ingevoerd.
Ik heb nog effe gezocht gister avond op msdn, ik kwam op de functie WaitForSingleObject(), maar kreeg dat niet aan de praat. Weet iemand of dit de goeie functie is enzo hoe ik het hiermee voor elkaar krijg |
Zomaar een idee: Kunstmatig een "toetsaanslag" in de buffer zetten (afgestemd op tijd, hovol de buffer zit etc) ?
|
Citaat:
:( |
Ok ok, ik ga maar door met jullie lastig vallen. Dat probleem waar dit topic eigenlijk voor is heb ik opgelost, maar nu heb ik een memleak die ik niet gefixt krijg.
de regels die van toepassing zijn: Code:
gamedata.screenBuff = (CHAR_INFO*)malloc(sizeof(CHAR_INFO) * gamedata.width * gamedata.heigth); Code:
while(!gamedata.gameover) Code:
void FreeMem() why o why |
hoe crashtie? en waarom gebruik je trouwens malloc ipv new? (en waarom alloceer je dat geheugen uberhaupt dynamisch?)
|
http://members.lycos.nl/hendre/memleak.jpg
dunno waarom ik malloc gebruik ipv new, heb dit een klein beetje gebasseerd op een tut wat ik op inet had gevonden. En de reden dat ik geheugen dynamisch alloceer is omdat ik het later uit wil breiden met de functie dat de gebruiker zelf de grootte in kan stellen van t speelveld :) |
nevermind, tis opgelost (dankzij got (a))
|
Lol ik open dit topic, ram o[p page down en krijg ineens een error en denk "wtf"...en toen zag ik pas de tekst en dat het een plaatje was :+
|
hahaa, lool :D :D
|
Alle tijden zijn GMT +1. Het is nu 04:31. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.