Gå til innhold

Returnerer feil verdi


Anbefalte innlegg

Hei, driver å lager ett "spill" hvor du styrer en fyr med piltastene inne i ett lukket område.

 

(dos)

 

Har laget en funksjon som passer på at fyren du styrer ikke går utenfor veggene:

 

void sjekkvegg(int fyrX, int fyrY, int oppveggX[100], int oppveggY[100], int nedveggX[100], int nedveggY[100], int vveggX[100], int vveggY[100], int hveggX[100], int hveggY[100], int &sjok) {
    for (int teller = 0; teller < 100; teller++) {
        

        
    if (fyrX == hveggX[teller] - 1 && fyrY == hveggY[teller]) {
             sjok = 4;
             }
    if (fyrX == oppveggX[teller] && fyrY == oppveggY[teller] + 1) {
             sjok = 1;
             }
    if (fyrX == nedveggX[teller] && fyrY == nedveggY[teller] - 1) {
             sjok = 2;
             }
    if (fyrX == vveggX[teller] + 1 && fyrY == vveggY[teller]) {
             sjok = 3;
             }
             for (int i = 0; i < 100; i++) {
    if ((fyrX == nedveggX[teller] && fyrY == nedveggY[teller] - 1) && (fyrX == hveggX[i] - 1 && fyrY == hveggY[i])) {
              sjok = 5;
              }
    if ((fyrX == oppveggX[teller] && fyrY == oppveggY[teller] + 1) && (fyrX == hveggX[i] - 1 && fyrY == hveggY[i])) {
              sjok = 6;
              }
    if ((fyrX == oppveggX[teller] && fyrY == oppveggY[teller] + 1) && (fyrX == vveggX[i] + 1 && fyrY == vveggY[i])) {
              sjok = 7;
              }
    if ((fyrX == nedveggX[teller] && fyrY == nedveggY[teller] - 1) && (fyrX == vveggX[i] + 1 && fyrY == vveggY[i])) {
              sjok = 8;
              }
              }

    }
             }

 

Oppvegg er en vegg som bare sperrer oppover, nedvegg nedover osv...

fyrX, fyrY er plaseringen fyr er på.

 

Først sjekker den om fyr er inntill en vegg, også om fyr er inntlill ett hjørne...

 

Alt fungerte bra helt til jeg lage den siste hvor den skal returnere 8 vis den er i nedre venstere hjørne. Den gjør funksjonen og setter sjok til 8. Men når den går tilbake til hovedprogrammet er sjok 3 igjen :S

 

Vis jeg skriver slutten sån:

    if ((fyrX == nedveggX[teller] && fyrY == nedveggY[teller] - 1) && (fyrX == vveggX[i] + 1 && fyrY == vveggY[i])) {
              sjok = 8;
              cout <<"sjekk1";
              }
              }

    }
     cout <<sjok;
             }

 

Så kommer det først opp sjekk1, da vet jeg at den har satt sjok til 8.

Men når funksjonen er ferdig og den skriver ut sjok, står det 3 der... :S

Endret av Glutar
Lenke til kommentar
Videoannonse
Annonse

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...