Toon posts:

[C] probleempje met while()

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een spelletje (zeeslag voor je console ;))
En nu stuitte ik op een probleempje.
Ik heb het volgende stukje code (STUKJE, niet de hele code nee):
code:
1
2
3
4
5
6
7
8
9
10
11
12
        while (d != 1) {
                input("start");
                startx = tempx;
                starty = tempy;

                input("einde");
                endx   = tempx;
                endy   = tempy;

                if(plaats(startx, starty, endx, endy) != 5)
                        d = 1;
        }

de functie plaats() returned namelijk 0 als de zet mogelijk is en hij returned 5 als de zet niet mogelijk is.
Nu werkt dit perfect als ik in 1 keer een goede zet doe.
Maar als ik een verkeerde zet maak (dan returned plaats(); dus 5) dan moet ik opnieuw een zet doen (dit hoort ook zo).
Maar als ik dan opnieuw een GOEDE zet doe, moet ik toch alsmaar opnieuw een zet doen.
ik kom dus ik een soort van loop terrecht terwijl ik toch een goede zet invoer.
Ik hoop dat dit een beetje duidelijk overkomt (tis nogall verwarrend he? ;)) en dat iemand mij kan helpen!

  • whoami
  • Registratie: December 2000
  • Nu online
Dit komt waarschijnlijk omdat die d dan altijd op 1 staat. Eens je een foutieve zet gedaan hebt, heeft d de waarde 1. Als je daarna een goede zet gedaan hebt, blijft d toch op 1 staan.

Je zult dus een else aan die if moeten toevoegen waar je een 0 oid aan d assigned.

(Denk ik, na 2 minuten naar uw code gekeken te hebben).
Debug het boeltje anders eens...

[ Voor 15% gewijzigd door whoami op 15-01-2003 19:38 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Heb ik net geprobeerd, helpt niet :\

  • whoami
  • Registratie: December 2000
  • Nu online
Debug je code eens, en kijk eens waar het fout gaat.

https://fgheysels.github.io/


Verwijderd

Topicstarter
hmm ik weet nu ONGEVEER waar de fout zit en dat is dus niet in de while..

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09:23

.oisyn

Moderator Devschuur®

Demotivational Speaker

je probleem zit m niet in de while zoals in je topictitel staat, maar je functie plaats () retourneert gewoon altijd 5

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Ik denk ook dat je "d" nog ergens in je code zal moeten veranderen. Anders blijft ie idd 1 vrees ik.

Verwijderd

Topicstarter
.oisyn schreef op 15 januari 2003 @ 19:42:
je probleem zit m niet in de while zoals in je topictitel staat, maar je functie plaats () retourneert gewoon altijd 5
true, dit dacht ik op het eerste gezicht, maar is dus niet waar :)
voortaan beter kijken sorry :\

edit:
bug found, zat idd in plaats(); die altijd 5 returnde omdat ik een globale int niet had gereset :\

[ Voor 15% gewijzigd door Verwijderd op 15-01-2003 19:44 ]


Verwijderd

Topicstarter
huh wtf, nu gebeurt er wel iets HEEL erg raars :)
code:
1
2
3
4
5
..
int plaats(int sx, int sy, int ex, int ey, int maxlength = 99) {
        int i, b, max;
        max = maxlength;
..

en dan gaat ie zeiken dat maxlength undeclared is :?

Verwijderd

Topicstarter
hmm dat "int maxlength = 99" vind C kennelijk niet lief, in php kon dit altijd :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09:23

.oisyn

Moderator Devschuur®

Demotivational Speaker

kent C ook default arguments :?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Geen idee, ik dacht dat het wel kon :)

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
Nee, da's C++.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Default arguments doe je zo, toch?

code:
1
2
3
4
5
6
7
void bier(int glazen) {
  bier(glazen, B_HEINEKEN);
}

void bier(int glazen, int merk) {
  printf("%d glazen %s komen eraan!", glazen, merk2naam(merk));
}


Moet het loopje van de topicstarter geen do {... } while (...) zijn, aangezien er altijd minimaal 1 zet gedaan moet worden?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09:23

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nee, dat is function overloading, iets wat overigens ook niet kan in C

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Is het programmeer technisch niet 'netter' om van maxlength = 99 een constante te maken?
Pagina: 1