Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - scacchiera
Forum - C/C++ - scacchiera

Avatar
pocho22na (Normal User)
Newbie


Messaggi: 1
Iscritto: 04/02/2012

Segnala al moderatore
Postato alle 19:20
Sabato, 04/02/2012

Implementare un algoritmo legato al gioco degli scacchi. L’algoritmo considera una scacchiera regolamentare (8x8 caselle bianche e nere, casella nera in basso a sinistra), dispone a caso (usando la function rand) 8 Pedoni bianchi (per semplicità, possono stare in una qualunque casella non occupata da un altro pezzo) e poi dispone a caso (usando la function rand) una Regina nera (può stare in una qualunque casella non occupata da un altro pezzo). L’algoritmo deve visualizzare la scacchiera, mostrando una ‘b’ e una ‘n’ per le caselle bianche e nere non occupate, mostrando una ‘P’ nelle caselle occupate dai Pedoni e una ‘R’ per la casella occupata dalla Regina. L’algoritmo determina, in base alla posizione di tutti i pezzi sulla scacchiera, quali sono i Pedoni che possono essere catturati da uno qualunque dei possibili movimenti della Regina. Fare attenzione al fatto che un Pedone potrebbe essere “protetto” da un altro Pedone e che i Pedoni “protetti” non possono essere catturati. Infine l’algoritmo visualizza l’elenco dei Pedoni catturabili, precisando anche da quale pezzo sono catturabili e utilizzando la notazione usuale delle posizioni nel gioco degli scacchi, ovvero scrivendo, per esempio: Pedone in a3 catturabile da Regina in b4, Pedone in d6 catturabile da Regina in b4,….. Ricordare che nella notazione usuale degli scacchi le righe della scacchiera sono indicate mediante numeri interi (da 1 ad 8, dal basso verso l’alto), mentre le colonne sono indicate mediante lettere dell’alfabeto (da ‘a’ ad ‘h’ da sinistra a destra) e che la notazione prevede di indicare prima la lettera (colonna) e poi il numero (riga).


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

int main(){
    char scacchiera[][8]={{'b','n','b','n','b','n','b','n'},
                      {'n','b','n','b','n','b','n','b'},
                      {'b','n','b','n','b','n','b','n'},
                      {'n','b','n','b','n','b','n','b'},
                      {'b','n','b','n','b','n','b','n'},
                      {'n','b','n','b','n','b','n','b'},
                      {'b','n','b','n','b','n','b','n'},
                      {'n','b','n','b','n','b','n','b'}};
     int i,j,x;
    
     srand(time(NULL));
     //pedoni casuali
     for(x=1;x<=8;x++){
      i=rand()%8;
      j=rand()%8;        
      if (scacchiera[j]=='b' || scacchiera[j]=='n')
         scacchiera[j]='P';
      else{
       i=rand()%8;
       j=rand()%8;        
       scacchiera[j]='P';
       }
     }
     //regina casuale
     x=1;
     while (x==1){
      i=rand()%8;
      j=rand()%8;
      if (scacchiera[j]=='b' || scacchiera[j]=='n'){
       scacchiera[j]='R';
       x=0;
       }
      }
     //stampa
     for(i=0;i<8;i++){
       for(j=0;j<8;j++){
         printf(" %c|", scacchiera[j]);
         }
       printf("\n------------------------\n");
       }
       system ("PAUSE");
}

sono partito bene ?

PM Quote
Avatar
anthony015 (Member)
Pro


Messaggi: 116
Iscritto: 20/05/2011

Segnala al moderatore
Postato alle 20:34
Sabato, 04/02/2012
non molto, cosa dovrebbe significare scacchiera[j] quando scacchiera è un array bidimensionale?
ps: ti consiglio di usare i tag code...

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 17:24
Lunedì, 06/02/2012
Ciao pocho22na,

non so se potra' esserti utile, ma in passato ho gia' affrontato il problema degli scacchi, e quindi del movimento di ogni pezzo in base ai pezzi presenti nella scacchiera;
era in Delphi, ma a livello di algoritmo puo' esserti comunque di aiuto (spero);
lo misi su pierotofy, esattamente qui':

http://www.pierotofy.it/pages/sorgenti/dettagli/18139-Ches ...

Ciao.

PM Quote