C 언어 는 간단 한 삼자 기 종목 을 실현 한다.

10150 단어 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);
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기