C 언어 는 간단 한 삼자 기 종목 을 실현 한다.
삼자 기 는 흑백 바둑 의 일종 이다.삼자 기 는 민간 전통 놀이 로 구 궁 기,동그라미 포크,용 한 마리,정자 기 등 이 라 고도 부른다.정사각형 대각선 을 연결 하여 양쪽 에 세 개의 바둑 알 을 차례대로 놓 고 자신의 세 개의 바둑 알 을 한 줄 로 만 들 면 상대방 이 지 는 것 이다.하지만 비 기 는 경우 가 많다.
다 중 파일 형식
게임 을 실현 하기 위해 서 는 먼저 test.c game.c game.h 세 개의 파일 을 만들어 야 합 니 다.
test.c 는 주로 게임 의 테스트 를 진행한다.
game.c 는 주로 게임 내부 의 일부 함수 의 구체 적 인 실현 을 진행한다.
game.h 는 주로 성명,매크로 정의 입 니 다.
게임 논리
1.게임 의 간단 한 메뉴 를 인쇄 합 니 다.
2.바둑판 초기 화.
3.바둑판 인쇄.
4.플레이어 가 바둑(키보드 입력 좌표)을 두 고 바둑판 을 인쇄 하여 승 패 를 판단 한다.
5.컴퓨터 바둑(랜 덤 좌표)은 바둑판 을 인쇄 하여 승 부 를 판단 한다.
게임 구현
 1.인쇄 메뉴
화면 에 간단 한 메뉴 를 인쇄 하여 게이머 들 의 선택 을 알려 줍 니 다.
void menu()
{
 printf("**************************
");
 printf("********  1.play  ********
");
 printf("********  0.exit  ********
");
 printf("**************************
");
}
 2.바둑판 초기 화
3x3 의 배열 을 빈 칸 으로 초기 화 합 니 다.
void InitBoard(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++)
  {
   board[i][j] = ' ';
  }
 }
}3.바둑판 인쇄화면 에 현재 바둑판 을 인쇄 하여 게이머 들 이 다음 단계 로 가 려 는 단 계 를 선택 하 게 합 니 다.
void DisplayBoard(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++)
  {
   printf(" %c ", board[i][j]);
   if (j < col - 1)
    printf("|");
  }
  printf("
");
  if (i < row - 1)
  {
   for (j = 0; j < col; j++)
   {
    printf("---");
    if (j < col - 1)
     printf("|");
   }
  }
  printf("
");
 }
}4.플레이어 바둑유 저 는 키보드 에 좌 표를 입력 합 니 다.입력 한 합 법 적 인 범 위 는 1<=x,y<=3 입 니 다.유저 의 입력 에 따라 대응 하 는 배열 의 값 을 별표'*'로 부여 합 니 다.
void PlayerMove(char board[ROW][COL], int row, int col)
{
 printf("   :>
");
 int x = 0;
 int y = 0;
 while (1)
 {
  scanf("%d%d", &x, &y);
  if (x >= 1 && x <= 3 && y >= 1 && y <= 3)
  {
   if (board[x - 1][y - 1] == ' ')
   {
    board[x - 1][y - 1] = '*';
    break;
   }
   else
   {
    printf("     ,     
");
   }
  }
  else
  {
   printf("    ,     
");
  }
 }
}5.컴퓨터 바둑임 의 수 를 생 성하 고 대응 하 는 배열 의 할당 값 은 우물 번호'\#'입 니 다.
void ComputerMove(char board[ROW][COL], int row, int col)
{
 int x = 0;
 int y = 0;
 printf("   :>
");
 x = rand() % row;
 y = rand() % col;
 while (1)
 {
  x = rand() % row;
  y = rand() % col;
  if (board[x][y] == ' ')
  {
   board[x][y] = '#';
   break;
  }
 }
}6.승 부 를 판단 한다1.유저 가 이기 면 별표 로 돌아 갑 니 다
2.컴퓨터 가 이 겨 서 우물 번호 로 돌아간다
3.무승부 복귀 P
4.바둑판 을 가득 채 우 고 게임 을 계속 하 다 C 로 돌아 가기
char Iswin(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] && board[1][i] != ' ')
  {
   return board[1][i];
  }
 }
 //   
 if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')
 {
  return board[1][1];
 }
 if (board[2][0] == board[1][1] && board[1][1] == board[0][2] && board[1][1] != ' ')
 {
  return board[1][1];
 }
 if (IsFull(board, ROW, COL))
 {
  return 'P';
 }
 return 'C';
}7.바둑판 이 꽉 찼 는 지 판단
int IsFull(char board[ROW][COL], int row, int col)
{
 int i = 0;
 int j = 0;
 for (i = 0; i < row; i++)
 {
  for (j = 0; j < col; j++)
  {
   if (board[i][j] == ' ')
    return 0;
  }
 }
 return 1;
}구체 코드test.c
#include "game.h"
void menu()
{
 printf("**************************
");
 printf("********  1.play  ********
");
 printf("********  0.exit  ********
");
 printf("**************************
");
}
void game()
{
 char board[ROW][COL];
 //     
 InitBoard(board, ROW, COL);
 //    
 DisplayBoard(board, ROW, COL);
 //    
 while (1)
 {
  PlayerMove(board, ROW, COL);
  DisplayBoard(board, ROW, COL);
  if (Iswin(board, ROW, COL) != 'C')
  {
   break;
  }
  ComputerMove(board, ROW, COL);
  DisplayBoard(board, ROW, COL);
  if (Iswin(board, ROW, COL) != 'C')
  {
   break;
  }
 }
 if (Iswin(board, ROW, COL) == '*')
 {
  printf("   
");
 }
 else if (Iswin(board, ROW, COL) == '#')
 {
  printf("   
");
 }
 else
 {
  printf("  
");
 }
}
int main()
{
 int input = 0;
 do
 {
  printf("   :
");
  menu();
  scanf("%d", &input);
  switch (input)
  {
  case 1:
   game();
   break;
  case 0:
   printf("    
");
   break;
  default:
   printf("    
");
   break;
  }
 } while (input);
 return 0;
}game.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"
void InitBoard(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++)
  {
   board[i][j] = ' ';
  }
 }
}
void DisplayBoard(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++)
  {
   printf(" %c ", board[i][j]);
   if (j < col - 1)
    printf("|");
  }
  printf("
");
  if (i < row - 1)
  {
   for (j = 0; j < col; j++)
   {
    printf("---");
    if (j < col - 1)
     printf("|");
   }
  }
  printf("
");
 }
}
void PlayerMove(char board[ROW][COL], int row, int col)
{
 printf("   :>
");
 int x = 0;
 int y = 0;
 while (1)
 {
  scanf("%d%d", &x, &y);
  if (x >= 1 && x <= 3 && y >= 1 && y <= 3)
  {
   if (board[x - 1][y - 1] == ' ')
   {
    board[x - 1][y - 1] = '*';
    break;
   }
   else
   {
    printf("     ,     
");
   }
  }
  else
  {
   printf("    ,     
");
  }
 }
}
void ComputerMove(char board[ROW][COL], int row, int col)
{
 int x = 0;
 int y = 0;
 printf("   :>
");
 x = rand() % row;
 y = rand() % col;
 while (1)
 {
  x = rand() % row;
  y = rand() % col;
  if (board[x][y] == ' ')
  {
   board[x][y] = '#';
   break;
  }
 }
}
int IsFull(char board[ROW][COL], int row, int col)
{
 int i = 0;
 int j = 0;
 for (i = 0; i < row; i++)
 {
  for (j = 0; j < col; j++)
  {
   if (board[i][j] == ' ')
    return 0;
  }
 }
 return 1;
}
char Iswin(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] && board[1][i] != ' ')
  {
   return board[1][i];
  }
 }
 //   
 if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')
 {
  return board[1][1];
 }
 if (board[2][0] == board[1][1] && board[1][1] == board[0][2] && board[1][1] != ' ')
 {
  return board[1][1];
 }
 if (IsFull(board, ROW, COL))
 {
  return 'P';
 }
 return 'C';
}game.h
#pragma once
#include <stdio.h>
#define ROW 3
#define COL 3
void InitBoard(char board[ROW][COL], int row, int col);
void DisplayBoard(char board[ROW][COL], int row, int col);
void PlayerMove(char board[ROW][COL], int row, int col);
void ComputerMove(char board[ROW][COL], int row, int col); 
char Iswin(char board[ROW][COL], int row, int col);이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
                이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.