Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di bovy
    Registrato dal
    Nov 2006
    Messaggi
    269

    [C++] problema inserimento computer in forza 4

    ho fatto il gioco di forza 4 con un vettore di 6x7..per intenderci tabella[6][7]...da qui posso scegliere se giocare contro un altro giocatore o contro il computer..però nell'inserimento del computer, che non è del tutto casuale non fa quello che dovrebbe; vi dico cosa sono le variabili: cont2 mi serve per dire alla fine "nessuno ha vinto"; turno regola i turni tra il pc e il giocatore; inizio è la funzione che regola il gioco giocatore contro pc e all'interno c'è il disegno della tabella, la ricerca del vincitore e il controllo del turno con il relativo inserimento del pc o del giocatore...di seguito vi passo il sorgente solo l'inserimento del pc.
    non so perchè non vada, ad esempio se nella prima riga metto in orizzontale 3 pedine del giocatore il pc la mette da tutt'altra parte la sua e io sono libero di metterne 4 in fila; poi durante il gioco certe volte il giocatore mette la sua pedina x bloccare la vittoria del pc, ma lui mette la pedina del giocatore ( che sarebbe la x) da un altra parte trasformata in O (pedina del pc) e fa vincere il pc come mai?
    codice:
    int pc () {
    Windows più che un sistema operativo è un sistema nervoso....

  2. #2
    Utente di HTML.it L'avatar di bovy
    Registrato dal
    Nov 2006
    Messaggi
    269
    int pc () {

    /////difesa////

    int r,a,b,c,d,w;

    //Orizzontale

    for ( r = 0; r < 6 ; r++) {
    for (a=0,b=1,c=2,d=3 ; d<7 ; a++,b++,c++,d++) {

    if (tabella[r][a]=='X' && tabella[r][b]=='X' && tabella[r][c]=='X' && tabella[r][d]==0)
    {
    for(w=0; w<=r; w++)
    {
    if(tabella[w][d]=0)
    {
    if(w==r)
    {
    tabella[w][d]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }


    if (tabella[r][a]=='X' && tabella[r][b]=='X' && tabella[r][c]==0 && tabella[r][d]=='X')
    {
    for(w=0; w<=r; w++)
    {
    if(tabella[w][c]=0)
    {
    if(w==r)
    {
    tabella[w][c]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }

    if (tabella[r][a]=='X' && tabella[r][b]==0 && tabella[r][c]=='X' && tabella[r][d]=='X')
    {
    for(w=0; w<=r; w++)
    {
    if(tabella[w][b]=0)
    {
    if(w==r)
    {
    tabella[w][b]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }

    if (tabella[r][a]==0 && tabella[r][b]=='X' && tabella[r][c]=='X' && tabella[r][d]=='X')
    {
    for(w=0; w<=r; w++)
    {
    if(tabella[w][a]=0)
    {
    if(w==r)
    {
    tabella[w][a]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }

    }
    }

    //Verticale
    for (r = 0 ; r < 7 ; r++) {
    for (a=0,b=1,c=2,d=3 ; d<6 ; a++,b++,c++,d++) {
    if (tabella[a][r]=='X' && tabella[b][r]=='X' && tabella[c][r]=='X' && tabella[d][r]==0)
    {
    tabella[d][r]='O'; cont2++; turno=0; inizio (); break;
    }

    if (tabella[a][r]=='X' && tabella[b][r]=='X' && tabella[c][r]==0 && tabella[d][r]=='X')
    {
    tabella[c][r]='O'; cont2++; turno=0; inizio (); break;
    }
    if (tabella[a][r]=='X' && tabella[b][r]==0 && tabella[c][r]=='X'&& tabella[d][r]=='X')
    {
    tabella[b][r]='O'; cont2++; turno=0; inizio (); break;
    }

    if (tabella[a][r]==0 && tabella[b][r]=='X' && tabella[c][r]=='X'&& tabella[d][r]=='X')
    {
    tabella[a][r]='O'; cont2++; turno=0; inizio (); break;
    }
    }
    }


    //Diagonale [VersoDestra]
    for (r = 0 ; r < 3 ; r++) {
    for (a=0,b=1,c=2,d=3 ; d<7 ; a++,b++,c++,d++) {
    if (tabella[r][a]=='X' && tabella[r+1][b]=='X' && tabella[r+2][c]=='X' && tabella[r+3][d]==0)
    {
    for(w=0; w<=r+3; w++)
    {
    if(tabella[w][d]=0)
    {
    if(w==r+3)
    {
    tabella[w][d]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }



    if (tabella[r][a]=='X' && tabella[r+1][b]=='X' && tabella[r+2][c]==0 && tabella[r+3][d]=='X')
    {
    for(w=0; w<=r+2; w++)
    {
    if(tabella[w][c]=0)
    {
    if(w==r+2)
    {
    tabella[w][c]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }

    if (tabella[r][a]=='X' && tabella[r+1][b]==0 && tabella[r+2][c]=='X' && tabella[r+3][d]=='X')
    {
    for(w=0; w<=r+1; w++)
    {
    if(tabella[w][b]=0)
    {
    if(w==r+1)
    {
    tabella[w][b]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }

    if (tabella[r][a]==0 && tabella[r+1][b]=='X' && tabella[r+2][c]=='X' && tabella[r+3][d]=='X')
    {
    for(w=0; w<=r; w++)
    {
    if(tabella[w][a]=0)
    {
    if(w==r)
    {
    tabella[w][a]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }
    }
    }

    //Diagonale [VersoSinistra]
    for (r = 0 ; r < 3 ; r++) {
    for (a=3,b=4,c=5,d=6 ; a>=0 ; a--,b--,c--,d--) {
    if (tabella[r][d]=='X' && tabella[r+1][c]=='X' && tabella[r+2][b]=='X' && tabella[r+3][a]==0)
    {
    for(w=0; w<=r+3; w++)
    {
    if(tabella[w][a]=0)
    {
    if(w==r+3)
    {
    tabella[w][a]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }


    if (tabella[r][d]=='X' && tabella[r+1][c]=='X' && tabella[r+2][b]==0 && tabella[r+3][a]=='X')
    {
    for(w=0; w<=r+2; w++)
    {
    if(tabella[w][b]=0)
    {
    if(w==r+2)
    {
    tabella[w][b]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }

    if (tabella[r][d]=='X' && tabella[r+1][c]==0 && tabella[r+2][b]=='X' && tabella[r+3][a]=='X')
    {
    for(w=0; w<=r+1; w++)
    {
    if(tabella[w][c]=0)
    {
    if(w==r+1)
    {
    tabella[w][c]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }

    if (tabella[r][d]==0 && tabella[r+1][c]=='X' && tabella[r+2][b]=='X' && tabella[r+3][a]=='X')
    {
    for(w=0; w<=r; w++)
    {
    if(tabella[w][d]=0)
    {
    if(w==r)
    {
    tabella[w][d]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }
    }
    }
    Windows più che un sistema operativo è un sistema nervoso....

  3. #3
    Utente di HTML.it L'avatar di bovy
    Registrato dal
    Nov 2006
    Messaggi
    269
    ///ATTACCO///


    //Orizzontale

    for ( r = 0; r < 6 ; r++) {
    for (a=0,b=1,c=2,d=3 ; d<7 ; a++,b++,c++,d++) {

    if (tabella[r][a]=='O' && tabella[r][b]=='O' && tabella[r][c]=='O' && tabella[r][d]==0)
    {
    for(w=0; w<=r; w++)
    {
    if(tabella[w][d]=0)
    {
    if(w==r)
    {
    tabella[w][d]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }


    if (tabella[r][a]=='O' && tabella[r][b]=='O' && tabella[r][c]==0 && tabella[r][d]=='O')
    {
    for(w=0; w<=r; w++)
    {
    if(tabella[w][c]=0)
    {
    if(w==r)
    {
    tabella[w][c]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }

    if (tabella[r][a]=='O' && tabella[r][b]==0 && tabella[r][c]=='O' && tabella[r][d]=='O')
    {
    for(w=0; w<=r; w++)
    {
    if(tabella[w][b]=0)
    {
    if(w==r)
    {
    tabella[w][b]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }

    if (tabella[r][a]==0 && tabella[r][b]=='O' && tabella[r][c]=='O' && tabella[r][d]=='O')
    {
    for(w=0; w<=r; w++)
    {
    if(tabella[w][a]=0)
    {
    if(w==r)
    {
    tabella[w][a]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }

    }
    }

    //Verticale
    for (r = 0 ; r < 7 ; r++) {
    for (a=0,b=1,c=2,d=3 ; d<6 ; a++,b++,c++,d++) {
    if (tabella[a][r]=='O' && tabella[b][r]=='O' && tabella[c][r]=='O' && tabella[d][r]==0)
    {
    tabella[d][r]='O'; cont2++; turno=0; inizio (); break;
    }

    if (tabella[a][r]=='O' && tabella[b][r]=='O' && tabella[c][r]==0 && tabella[d][r]=='O')
    {
    tabella[c][r]='O'; cont2++; turno=0; inizio (); break;
    }
    if (tabella[a][r]=='O' && tabella[b][r]==0 && tabella[c][r]=='O'&& tabella[d][r]=='O')
    {
    tabella[b][r]='O'; cont2++; turno=0; inizio (); break;
    }

    if (tabella[a][r]==0 && tabella[b][r]=='O' && tabella[c][r]=='O'&& tabella[d][r]=='O')
    {
    tabella[a][r]='O'; cont2++; turno=0; inizio (); break;
    }
    }
    }


    //Diagonale [VersoDestra]
    for (r = 0 ; r < 3 ; r++) {
    for (a=0,b=1,c=2,d=3 ; d<7 ; a++,b++,c++,d++) {
    if (tabella[r][a]=='O' && tabella[r+1][b]=='O' && tabella[r+2][c]=='O' && tabella[r+3][d]==0)
    {
    for(w=0; w<=r+3; w++)
    {
    if(tabella[w][d]=0)
    {
    if(w==r+3)
    {
    tabella[w][d]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }



    if (tabella[r][a]=='O' && tabella[r+1][b]=='O' && tabella[r+2][c]==0 && tabella[r+3][d]=='O')
    {
    for(w=0; w<=r+2; w++)
    {
    if(tabella[w][c]=0)
    {
    if(w==r+2)
    {
    tabella[w][c]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }

    if (tabella[r][a]=='O' && tabella[r+1][b]==0 && tabella[r+2][c]=='O' && tabella[r+3][d]=='O')
    {
    for(w=0; w<=r+1; w++)
    {
    if(tabella[w][b]=0)
    {
    if(w==r+1)
    {
    tabella[w][b]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }

    if (tabella[r][a]==0 && tabella[r+1][b]=='O' && tabella[r+2][c]=='O' && tabella[r+3][d]=='O')
    {
    for(w=0; w<=r; w++)
    {
    if(tabella[w][a]=0)
    {
    if(w==r)
    {
    tabella[w][a]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }
    }
    }

    //Diagonale [VersoSinistra]
    for (r = 0 ; r < 3 ; r++) {
    for (a=3,b=4,c=5,d=6 ; a>=0 ; a--,b--,c--,d--) {
    if (tabella[r][d]=='O' && tabella[r+1][c]=='O' && tabella[r+2][b]=='O' && tabella[r+3][a]==0)
    {
    for(w=0; w<=r+3; w++)
    {
    if(tabella[w][a]=0)
    {
    if(w==r+3)
    {
    tabella[w][a]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }


    if (tabella[r][d]=='O' && tabella[r+1][c]=='O' && tabella[r+2][b]==0 && tabella[r+3][a]=='O')
    {
    for(w=0; w<=r+2; w++)
    {
    if(tabella[w][b]=0)
    {
    if(w==r+2)
    {
    tabella[w][b]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }

    if (tabella[r][d]=='O' && tabella[r+1][c]==0 && tabella[r+2][b]=='O' && tabella[r+3][a]=='O')
    {
    for(w=0; w<=r+1; w++)
    {
    if(tabella[w][c]=0)
    {
    if(w==r+1)
    {
    tabella[w][c]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }

    if (tabella[r][d]==0 && tabella[r+1][c]=='O' && tabella[r+2][b]=='O' && tabella[r+3][a]=='O')
    {
    for(w=0; w<=r; w++)
    {
    if(tabella[w][d]=0)
    {
    if(w==r)
    {
    tabella[w][d]=='O';cont2++; turno=0; inizio (); break;
    }else{
    break;
    }
    }
    }
    }
    }
    }



    ///CASO///


    colonna = rand() % 7;
    while (colonna < 0 || colonna > 7);
    for (alte=0;alte<6;alte++) {
    if (tabella[alte][colonna]==0) { tabella[alte][colonna] = 'O'; cont2++; turno=0; inizio (); break;}
    }
    cout << "\n\nQuesta colonna e' piena!\n\n";
    pc ();

    }
    Windows più che un sistema operativo è un sistema nervoso....

  4. #4
    Utente di HTML.it L'avatar di bovy
    Registrato dal
    Nov 2006
    Messaggi
    269
    riassumendo tutto il codice il programma di inserimento dovrebbe fare questo: se trova tre 3 in orizzontale e il quarto posto e libero fa questo: inserisco un contatore chiamato w e faccio un ciclo for che viene eseguito fino a quando w è minore o uguale a r che è la riga della griglia di forza 4. se il vettore nella posizione w e d è libero gli va a chiedere se w è uguale a r, se è vero significa che mettondolo li blocca l'attacco, se non è vero può uscire da questo ciclo perchè mettondo la pedina l'attacco non verrebbe bloccato. la cosa viene poi ripetuta in diagonale e in tutto l'attacco..però non capisco xke non va
    Windows più che un sistema operativo è un sistema nervoso....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.