View Single Post
Hallo freaks. Jeg har holdt på med et tre på rad spill i c og har hatt litt problemer. Ideen er at jeg skal kunne spesifisere antall ruter og programmet vil funke uansett. Derfor kan jeg ikke bruke switch for å sjekke alle kombinasjonene som vil gjøre att ene spilleren vinner.

Til no har jeg kun skrevet kode til å sjekke om det er tre på rad sidelengs. Måten programmet gjør det på er se på ruten til venstre og spilleren sin brikke er der går den videre å sjekker den til høyre for den. Hvis det på et sted mangler en brikke breaker løkken. Hvis den har nådd helt til høyre vil den printe "(den sin tur det er) vinner".

Problemet er att det ikke virker. Brukte først 1 og 0 for å representere de forskjellige brikkene. Da funket det som det skulle. Fant ut at det var en dårlig ide siden verdiene i brettarray måtte ha noen verdier, naturlighvis null hvis ingenting annet er spesifisert. Så jeg bokstaver, x og o. Da fokket allt seg. For det første vil noen ganger brikkene bli plassert både der jeg sier det og på tilfeldig sted samtidig. For det andre vil ikke programmet reagere når det er 3 på rad. Hvis dere kan hjelpe meg med dette hadde det verdt utrolig fint. Har dessverre ikke kommentart koden min, dette er et skoleprosjekt så kommentarene jeg skrev var siktet mot læreren min som ikke har brukt c før, håper jeg forklarte det okei her. takk for hjelpen.

Kode

#include <stdio.h>
#define ruter 3

int main(void)
        {
        char brett[ruter-1][ruter-1];
        int spill = 1;             
        int x,y;
        char b;
        printf("for å flytte skriv (x-koordinat)/(y-koordinat)\n");

        for(x=0;x<=ruter-1;x++)
                {
                for(y=0;y<=ruter;y++)
                        {
                        brett[x][y]=' ';                 
                        } 
                }

        while(spill)
                {
                start:
                if(b=='x'){b='y';}
                else{b='x';}
                for(y=0;y<=ruter-1;y++)
                        {
                        for(x=0;x<=ruter-1;x++)
                                {
                                printf("{%c}",brett[x][y]);
                                } 
                         printf("\n"); 
                        }

                printf("%c sin tur\n",b);
                scanf("%d/%d",&x,&y);
                brett[x-1][y-1]=b;
                 for(x=0;x<=ruter-1;x++)
                        {
                        for(y=0;y<=ruter-1;y++)
                                {
                                if(brett[x][y]==b)
                                        {
                                        if(x == (ruter-1))
                                                {
                                                printf("%c vant\n",b);return 0;
                                                }
                                        }
                                else    {goto start;}
                                }
                        }
                }
        }
Sist endret av vidarlo; 17. februar 2018 kl. 22:47. Grunn: Kode-formatering