Archief - Maze in C

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

jethroeetvelde

Legacy Member
We moeten als progrommeerproject een maze maken in c.
We zullen waarschijnlijk later nog wel problemen hebben maar nu zit ik met het volgende: de besturing moet met de pijltjestoetsen maar hoe kan je deze laten inlezen. Tot nu werkt het met zqsd gevolgd door een enter en dit moet dus veranderen.

Kemblin

Legacy Member
Ik neem aan dat je enkel op een windows machine werkt:

Code:
if(GetAsyncKeyState(VK_UP)) {
	blabla;
}

virtual keycodes moet je maar eens op msdn zoeken

jethroeetvelde

Legacy Member
Het werkt wel maar deze staat in een lus: print de maze en tijdens deze lus duw je op de pijltjes. Wanneer je bijvoorbeeld scanf gebruikt naar letters, wacht hij met printen tot de letter is ingegeven. Bij getasynckeystate blijft hij constant printen.

Kemblin

Legacy Member
ik snap uw vraag/probleem niet echt :/ maar mss zijn de GetKeyState en GetKeyboardState functies wel iets voor u.

edit:
ik denk da ik u probleem snap, maar om dat blocking te maken dan kunt ge toch gewoon zoiets vies doen:

while(!GetAsyncKeyState(VK_UP)) Sleep(50);

jethroeetvelde

Legacy Member
Waar moet ik deze zetten? Ik heb net 3maand c achter de rug en weet er nog niet zoveel van :p

Kemblin

Legacy Member
mja probleem is, ik wil wel helpen maar mijn helderziendheid laat mij momenteel in de steek. Dus ik vrees dat ik zonder u code te zien niet ga weten waar ge dat gaat moeten zetten ;)

Ik wil wél een gokje doen: lijn 43!

jethroeetvelde

Legacy Member
while (makkelijk[0][1]!='x')
{
clrscr(); //clear screen
for (telhor=0;telhor<15;telhor++) //tabel afprinten
{
for (telver=0;telver<30;telver++)
{
printf("%c",makkelijk[telhor][telver]);
}
printf("\n");
}
if(GetAsyncKeyState(VK_UP))
{
if(i>0) --i;
}
if(GetAsyncKeyState(VK_RIGHT))
{
if(j<28) ++j;
}
if(GetAsyncKeyState(VK_DOWN))
{
if(i<14) ++i;
}
if(GetAsyncKeyState(VK_LEFT))
{
if(j>0) --j;
}
makkelijk[j]='x';
}
if (makkelijk[0][1]=='x')
printf("Joepidepoepie, je hebt gewonnen");

dit heb ik nu voor mijn stappen te doen

Kemblin

Legacy Member
Niet getest maar volgens mij wil je zoiets:

Code:
while (makkelijk[0][1]!='x') {
	clrscr(); //clear screen
	//tabel afprinten 
	for (telhor=0;telhor<15;telhor++) {
		for (telver=0;telver<30;telver++) {
			printf("%c",makkelijk[telhor][telver]);
		}
		printf("\n");
	}

	while(true) {
		if(GetAsyncKeyState(VK_UP)) {
			if(i>0) --i;
		}
		else if(GetAsyncKeyState(VK_RIGHT)) {
			if(j<28) ++j;
		}
		else if(GetAsyncKeyState(VK_DOWN)) {
			if(i<14) ++i;
		}
		else if(GetAsyncKeyState(VK_LEFT)) {
			if(j>0) --j;
		}
		else {
			Sleep(10);
			continue;
		}
		break;
	}
	
	makkelijk[i][j]='x';
}

if (makkelijk[0][1]=='x')
	printf("Joepidepoepie, je hebt gewonnen");

nu kan het wel nog gebeuren dat er meerdere keren getriggerd wordt als je een key indrukt, dan moet je maar eens naar de return code kijken van de getAsyncKeyState functie

jethroeetvelde

Legacy Member
nu geeft hij 2 foutmeldingen:
linker warning: no module definition file specified: using defaults
linker error; undefined symbol_sleep in module pijlen.c(naam van bestand)

Daedie

Legacy Member
dos.h includen om sleep() te gebruiken.

en sleep() is met kleine letter dacht ik.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan