C 언어 판 삼자 기 게임

7638 단어 C 언어삼자 장기
많은 사람들 이 어 렸 을 때 부터 삼자 기 를 한 적 이 있 는데,많은 사람들 이 이 게임 의 실현 에 대해 의문 을 가지 고 있다 고 믿는다.그럼 오늘 은 C 언어 로 직접 이 루어 보 겠 습 니 다.
먼저 흐름 도 에서 보 듯 이:

설명:우선 우 리 는 1/0 을 입력 하여 게임 에 들 어 갈 지 여 부 를 판단 합 니 다.1 로 입력 하면 게임 에 들 어 갑 니 다.0 으로 입력 하면 게임 종료;다른 값 으로 입력 할 때,우 리 는 다시 입력 하 는 것 을 알려 줍 니 다.그래서 여 기 는 switch 로 이 루어 집 니 다.
우 리 는 바둑판 을 돌 이 켜 보면 마치 2 차원 배열 과 같 기 때문에 우 리 는 바둑판 디자인 과 바둑판 에 값 을 부여 할 때 모두 2 차원 배열 을 사용 할 것 이다.우리 의 확장 성 을 강하 게 하기 위해 서,우 리 는 줄 과 열의 값 을 정의 하기 위해 매크로 를 사용 합 니 다.
앞으로 의 판 단 을 위해 서 우 리 는 바둑판 에 있 는 값 을 모두',즉 바둑판 의 초기 화 입 니 다.여기 서 우 리 는 IntBoard()함수 로 이 루어 집 니 다.이어서 우 리 는 바둑판 을 실현 할 것 이다.

우 리 는 첫 번 째 줄 은 데 이 터 를 놓 고 두 번 째 줄 은 경계선 이 고 세 번 째 줄 은 데 이 터 를 놓 으 며 네 번 째 행 위 는 경계선 이 고 다섯 번 째 줄 은 데 이 터 를 놓 으 며 여섯 번 째 줄 은 인쇄 하지 않 는 다 고 상상 할 수 있다.같은 이치 로 열 을 디자인 할 수 있 습 니 다.저 희 는 DisplayBoard()함수 로 이 루어 집 니 다.
다음은 바둑 을 두 는 부분 입 니 다.이것 은 순환 과정 입 니 다.우 리 는 while()순환 을 사용 하여 실 현 될 것 입 니 다.승 패 를 판단 하 는 IsWin()함수 로 while()순환 의 계속 과 끝 을 제어 할 것 입 니 다.
게이머 들 이 바둑 을 두 는 과정 에서 키보드 로 좌 표를 입력 하고 입력 한 후에 우 리 는 먼저 입력 한 좌표 가 바둑판 의 범 위 를 초과 하 는 지 판단 해 야 한다.만약 에 합 법 적 이면 그 다음 에 입력 한 좌표 가 비어 있 는 지,비어 있 으 면 떨 어 질 수 있 는 지,아니면 제시 문 구 를 인쇄 하고 다시 입력 해 야 한다.만약 에 합 법 적 이지 않 으 면 제시 하고 다시 입력 해 야 한다.
플레이어 가 탈락 한 후에 우 리 는 먼저 승패 가 발생 했 는 지 판단 해 야 한다.만약 에 승패 무승부 가 발생 하면 우 리 는 게임 을 끝 낼 것 이다.만약 에 모두 발생 하지 않 았 다 면 우 리 는'C'로 돌아 가 게임 을 계속 할 것 이다.우 리 는 IsWin()함수 로 실현 할 것 이다.
컴퓨터 에서 바둑 을 두 면 우 리 는 rand()함 수 를 사용 할 수 있다.우리 가 생 성 한 숫자 는 반드시 바둑판 범위 내 에 있어 야 하기 때문에 우 리 는 그것 을 우리 가 정의 한 줄 이나 열 에 모 아서 컴퓨터 입력 의 유효성 을 확보 할 수 있다.그 다음 에 우 리 는 게이머 와 마찬가지 로 컴퓨터 의 낙하자 가 비어 있 는 지 아 닌 지 를 판단 해 야 한다.
마찬가지 로 컴퓨터 가 떨 어 진 후에 도 IsWin()함수 로 승 부 를 판단 해 야 한다.
대체적인 게임 디자인 은 바로 이 렇 습 니 다.그 다음 에 우 리 는 코드 로 이 루어 집 니 다.이번 우리 의 실현 은 test.c game.c 로 나 뉘 어 각각 이 루어 집 니 다.그 중에서 test.c 는 주체 이 고 game.c 는 함수 의 정의 이 며 game.h 는 함수 의 성명 입 니 다.
여 기 는 test.c 의 내용 입 니 다:

#define _CRT_SECURE_NO_WARNINGS 1
 
#include"game.h"
 
//     
 
void menu()
{
 printf("1,play 0.exit");
}
void game() {
 char ret = 0;
 char board[ROW][COL] = { 0 };
 //   
 IntBoard(board, ROW, COL);
 Displayboard(board, ROW, COL);
 //    
 while (1) {
  PlayerMove(board, ROW, COL);
  Displayboard(board, ROW, COL);
  //       
  ret = IsWin(board, ROW, COL);
  if (ret != 'C') {
   break;
  }
  ComputerMove(board, ROW, COL);
  Displayboard(board, ROW, COL);
  ret = IsWin(board, ROW, COL);
  if (ret != 'C') {
   break;
  }
 }
 if (ret == '*')
  printf("   
"); else if (ret == "#") printf("
"); else printf("
"); } void test() { int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf(" :>
"); scanf("%d", &input); switch (input) { case 1: printf("
"); game(); break; case 0: printf("
"); break; default: printf(" ,
"); break; } } while (input); } int main() { test(); return 0; }
game.c:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include"game.h"
void IntBoard(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++) {
   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) { int x = 0; int y = 0; printf(" "); while (1) { printf(" "); scanf("%d%d", &x, &y); if (x >= 1 && x <= row && y >= 1 && y <= col) { 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("
"); while (1) { x = rand() % row; y = rand() % col; if (board[x][y] == ' ') { board[x][y] = '#'; break; } } } // 1 // 0 ; 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][0] != ' ') { return board[i][0]; } } // for (i = 0; i < col; i++) { if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' ') return board[0][i]; } if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board != ' ') return board[0][0]; if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ') return board[1][1]; // if (isFULL(board, ROW, COL) == 1) { return 'Q'; } return 'C'; }
game.h:

#pragma once
#define _CRT_SECURE_NO_WARNINGS 1
#define ROW 3
#define  COL 3
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void IntBoard(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);
//   “*”
//     “#”
//  “Q”
//    “C”
char IsWin(char board[ROW][COL], int row, int col);
실현 결과:

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기