Idées de jeux de backgammon

Aujourd'hui, le langage C est utilisé pour simuler une partie de backgammon.

Il y a environ cinq parties

1. Créez un menu pour que les joueurs puissent choisir de jouer ou non au jeu.

2. Imprimez l'échiquier.Grâce à l'utilisation de tableaux bidimensionnels, imprimez un échiquier N * N. Le but principal est d'initialiser l'échiquier avec des espaces et d'imprimer le cadre de l'échiquier.

3. Le joueur joue aux échecs et le joueur jouera aux échecs dans l'espace à volonté. Ce qu'il faut noter ici, c'est que le joueur ne sait pas que chaque ligne et colonne du tableau à deux dimensions commence à 0, et le joueur ne peut pas entrer de pièces d'échecs au-delà du plateau ou continuer à entrer à la position qui a déjà été placée. .

4. L'ordinateur joue aux échecs, et l'ordinateur doit faire attention au hasard. Ici, nous nous référons à la fonction rand (la fonction srand est requise comme condition préalable) et à la fonction de temps. Comparé aux joueurs jouant aux échecs, jouer aux échecs avec un ordinateur est plus simple. Vous pouvez utiliser une boucle while pour laisser l'ordinateur jouer à une position qui n'est pas répétée.

5. Pour juger de la victoire ou de la défaite, il n'y a que trois situations dans lesquelles le joueur gagne, l'ordinateur gagne et le match nul. Écrivez le code pour juger qui sera connecté en premier, sinon ce sera un match nul si l'échiquier est plein et que le gagnant n'a pas encore été déterminé.


Tout d'abord, écrivez d'abord la construction de base du code, d'abord pour construire un menu :

#include<stdio.h>
void menu()  //menu construit  {     printf("******************************* * *\n");     printf("************ 1.play ***********\n");     printf("******* * ***** 2.quitter *************\n");     printf("******************** **** *********\n"); } void test()  //Choix du joueur {     int input = 0;     do     {         menu();         printf("Veuillez choisir de jouer au jeu" );         scanf("% d", &input);         switch (input)         {         case 1 :             printf("Play game\n");             break;         case 2 :             printf("Quitter le jeu\n"); 






 














            break ;
        par défaut :
            printf("Choisissez une erreur, veuillez choisir à nouveau\n");
            break;
        }

    } tandis que (entrée);
}
int main()
{     test();     renvoie 0 ; }


Compilez le code, probablement ce résultat :

 

Ensuite, nous allons écrire le processus de lecture du jeu dans le cas 1, ici nous créons une fonction game() pour réaliser :

void game()
{     char board[ROW][COL] = { 0 } ;           // stocke les données d'échecs     InitBoard(board, ROW, COL);             // stocke les données d'échecs     DisplayBoard(board, ROW, COL);       // affiche le échiquier


Imprimez d'abord un modèle d'échiquier :

 

Il existe de nombreuses fonctions ici, nous avons donc créé un fichier d'en-tête game.h et un fichier source game.c pour implémenter ces fonctions.

jeu.h :

#include<stdio.h>
#define ROW 3
#define COL 3
//Initialize board
void InitBoard(char board[ROW][COL], int row, int col);
//Print board
void DisplayBoard(char board[ROW] [COL], ligne entière, colonne entière );

jeu.c :

Pour n'avoir aucun nombre dans notre échiquier, assignez des espaces à notre tableau 2D

#include"game.h"
void InitBoard(char board[ROW][COL], int row, int col)
{     int i = 0;     for (i = 0; i < ligne; i++)     {         int j = 0;         for (j = 0; j < col; j++)         {             board[i][j] = ' ';         }     } }









Le code suivant imprime une donnée à la fois, imprime une ligne verticale et imprime une ligne horizontale après l'impression d'une ligne. C'est-à-dire, en plus des éléments de données, et de la structure de l'échiquier imprimé, afin que notre échiquier puisse être affiché.

void DisplayBoard(char borad[ROW][COL], int row, int col)
{     int i = 0;     for (i = 0; i < ligne; i++)     {         int j = 0;         for (j = 0; j < col; j++)         {             printf(" %c ", conseil[i][j]);             if (j < col - 1)             {                 printf("|");             }         }         printf("\n");         if (i < row - 1)         {             for (j = 0; j < col; j++)             {                 printf("---");                 si (j < col - 1)                     printf("|");             }





















            printf("\n");
        }


    }
}

Ensuite, notre joueur joue aux échecs :

void game()
{     //joueur jouant aux échecs     Player_Move(board, ROW, COL);     DisplayBoard(board, ROW, COL); }



 

jeu.h :

//Le joueur joue aux échecs
void Player_Move(char board[ROW][COL], int row, int col);

jeu.c :

void Player_Move(char board[ROW][COL], int row, int col)
{     int a = 0;     int b = 0;     printf("Le joueur joue aux échecs\n");         while (1)         {             printf("Veuillez le joueur Coordonnées d'entrée : ");             scanf("%d %d", &a,&b);             if(a >= 1 && a <= row && b >= 1 && b <= col)             {                 //Commencez à jouer aux échecs                 if (board[a - 1][b - 1] == ' ')         / / C'est parce que le joueur ne sait pas que chaque ligne et colonne du tableau à deux dimensions commence par 0                 {                     board[a - 1][b - 1] = '*';                     break;                 }                 else                 {

















                   printf("Cette coordonnée est déjà occupée, veuillez ressaisir la coordonnée\n"); } }
                else
            {
            printf
            (                "La coordonnée saisie est invalide, veuillez ressaisir\n");             } }         }



Ensuite, implémentons les échecs informatiques :

void game()
{     //jouer aux échecs avec l'ordinateur     computer_move(board, ROW, COL);//jouer aux échecs au hasard     DisplayBoard(board, ROW, COL); }



jeu.h : 

// échecs informatiques
void computer_move(char board[ROW][COL], int row, int col);

jeu.c :

void computer_move(char board[ROW][COL], int row, int col)
{         int x = 0;         int y = 0 ;         printf("电脑下棋\n");         tandis que (1)         {         x = rand() % ligne ;         y = rand() % col ;         if (board[x][y] == ' ')         {             board[x][y]='#';             casser;         }     } }













Enfin, il s'agit de juger du gagnant ou du perdant :

Cela dépend dans quelles circonstances, le jeu est terminé.

1. Le joueur gagne, renvoie '*'

2. L'ordinateur gagne, retourne '#'

3. Égalité, retour 'Q'

Si ni l'un ni l'autre ne gagne, continuez et retournez 'C'

while (1)
    {         //Le joueur joue aux échecs         Player_Move(board, ROW, COL);         DisplayBoard(board, ROW, COL);         //Juging win or loss         ret = is_win (board, ROW, COL);        //Fonction nouvellement créée         if (ret != 'c')         {             break ;         }         //jouer aux échecs         computer_move(board, ROW, COL);//jouer aux échecs au hasard         DisplayBoard(board, ROW, COL);         ret = is_win(board, ROW, COL) ;         if (ret != 'c')         {             break;         }     }     if (ret == '*')     {         printf("Le joueur a gagné\n");





















    }
    else if (ret == '#')
    {         printf("L'ordinateur a gagné\n");     }     else     {         printf("Une égalité\n");     } }






jeu.h :

//Juge gagnant ou perdant
char is_win(char board[ROW][COL], int row, int col);game.c

jeu.c :

char is_win(char board[ROW][COL], int row, int col)
{ //判断行     int i = 0;     for (i = 0; i < row; i++)     {         if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board [i][1] != ' ')         {             return board[i][1] ;         }     }     //判断列     for (i = 0; i < col; i++)     {         if (board[0][i] == board[1][i] && board[1][i] == board[2 ][i] && planche[1][i] !



















    {         retour tableau[1][1] ;     }     si (planche[0][2] == planche[1][1] && planche[1][1] == planche[2][0] && planche[1][1] != ' ')     {         tableau de retour[1][1] ;     }





    //Judging a tie
    if (is_full(board, row, col) == 1)       //Ici, nous créons également une fonction pour juger si le tableau est plein
    {         return 'Q';     }     //Continue     return 'C';



 }

La fonction de if_full() ci-dessus est toujours implémentée dans game.c, car j'ai seulement besoin de la mettre dans le fichier source actuel et de ne pas laisser d'autres fichiers l'utiliser, donc je peux utiliser static pour la modifier ici.

statique int is_full(char board[ROW][COL], int row, int col)
{     int i = 0;     for (i = 0; i < row; i++)     {         int j = 0;         for (j = 0; j < col; j++)         {             if (board[i][j] == ' ')      //Si le tableau est vide, retourne 0 ;             {                 retourne 0 ;             }         }     }         retourne 1 ; }













Je suppose que tu aimes

Origine blog.csdn.net/qq_57827896/article/details/122643298
conseillé
Classement