Archief - [PROG][C++] Vier op een rij

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.

ILLuZi[]n

Legacy Member
Lo,

Ik zit met een vervelend probleem , ik ben namelijk bezig met het programmere van het spel " Vier op een rij" , mijn spel is bijna af , maar ik zit met 1 lastig probleem , namelijk , het programma zou eigelijk moeten checken of er een winnaar is ( 4 op een rij diagonaal , verticaal , horizontaal ), en ik kom hier maar niet uit hoe ik dit eventueel zou kunnen oplossen.

Ik heb al geprobeerd dit op te lossen via pointers , maar met een weinig "werkend" resultaat. Als iemand een idee heeft hoe ik dit kan oplossen , laat het me weten ;)

TY in advance ,

Dit is momenteel mijn code van het programma :

#include <stdio.h>
int tab[6][7];


int main(void)
{

int keuze;

while (keuze)
{
printf("*******************\n");
printf("** 1.Nieuw Spel **\n");
printf("** 2.Score **\n");
printf("*******************\n");
printf("Selecteer een optie : ");
scanf("%d", &keuze);
switch ( keuze )

{
case 1 :
printf("U hebt ervoor gekozen om een nieuw spel te starten\n\n");
spel(1);
break;
case 2 :
printf("U hebt ervoor gekozen om de Scores te zien\n\n"); break;
default :
printf("FOUTE KEUZE, Kies een getal uit de lijst\n\n"); break;

scanf("%*[^\n]%*c");
printf("\n");
printf("\n");
}



}
return 0;
}

int spel(void)
{
int rij=0, kolom;
while ( rij < 6 )
{
kolom = 0;
while ( kolom < 7 )
{
tab[rij][kolom] = 0;
printf("%d ", tab[rij][kolom]);
kolom++;
}
printf("\n");
rij++;
}
printf("\n");
steenwerpen(1);
return 0;
}

int steenwerpen(void)
{
int speler = 1;
int gegeven;
int rij;
int rdy = 0, rdy2 = 0;
int kolom;
do
{
if ( speler > 2 )
{
// Speler trgzetten van 2 naar 1
speler = 1;
}
else
{

printf("Speler %d is nu aan de beurt\n",speler);
printf("In welke kolom wilt u een steen werpen? : ");
scanf("%d", &gegeven);
while(gegeven<1 || gegeven>7)
{
printf("Dit is een foutieve waarde");
scanf("%*[^\n]%*c");
printf("\n");
printf("\n");
printf("Speler %d , geef een nogmaals een kolomnummer in\n",speler);
printf("In welke kolom wilt u een steen werpen? : ");
scanf("%d", &gegeven);
}


printf("\n");
rij = 5;
gegeven-=1;
rdy = 0;
// Bepaal de rij waarop het steentje moet rusten.
do
{
if ( tab[rij][gegeven]==0 )
{
tab[rij][gegeven]=speler;
rdy = 1;
}
else
{
rij--;
}
}while ( rdy == 0 );
// Hertekenen van de tabel
rij = 0;
while ( rij < 6 )
{
kolom = 0;
while ( kolom < 7 )
{
printf("%d ", tab[rij][kolom]);
kolom++;
}
printf("\n");
rij++;
}



// Ga naar volgende speler
/* controle(1); */
speler++;
}
}while ( rdy2 == 0 );
return 0;
}

int controle(void)
{




return 0;
}

&lt;~T$$~&gt;NrgY

Legacy Member
Der zijn 3 mogelijkheden om te winnen:

Dus:
Elke keer als er een nieuwe steen geworpen is, ga je checken of er 1 van die 3 situaties is. Eerst kunje best kijken of er horizontaal of verticaal in "tab" 4 dezelfde waarden staan op een rij (de array aflopen per kolom/rij en zien of dit zo is)

Diagonaal is iets moeilijker.
Je begint bv op positie 0,0 en dan doorloop je je tabel via 1,1 naar 6,6 (of 7,7)
Daarna ga je kijken beginnend van 1,0 en kijk je naar 2,1 enz
En op die manier doorloop je je hele tabel.

En dan natuurlijk nog in de andere richting ook bekijken.

ps: toevallig 1ste jaar KDG?

Darth-Falcon

Legacy Member
ge begint vanaf de positie van de laatste steen die geworpen is, en ge kijkt in alle richtingen.

heb dit int eerste ook moeten doen, alleen in vb

EagleEye

Legacy Member
idd, die code is zo plat :p zonder indentatie kunde als buitenstaander niet zien wat er staat ze :p
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