C 언어 2 인 오목 게임 실현

7118 단어 C 언어오목
본 논문 의 사례 는 C 언어 가 2 인 오목 게임 을 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
기능 을 실현 하 다
바둑판 유저 1 과 유저 2 대 전 을 생 성 합 니 다.어느 유저 가 먼저 연속 5 자 연결선 이 있 고 어느 유저 가 이 깁 니까?

어떻게 실현 합 니까?
구성:
2 차원 배열:board[ROW][COL],ROW*COL 의 바둑판 을 정의 합 니 다.
주요 논리:
바둑판 보이 기
1.바둑판 을 보 여 주 는 것 은 간단 합 니 다.천천히 바둑판 을 모 으 면 됩 니 다.
2.사용 자 는 두 가지 조건 에 주의 하 세 요.바둑 알 은 바둑판 에 있 고 다음 위 치 는 점용 되 지 않 습 니 다.
3.판단 이 가장 어렵다.
방법:하위 위치의 8 개 방향(위,아래,왼쪽,오른쪽,위,오른쪽,아래,왼쪽 위,왼쪽 아래)에서 같은 바둑 알 의 수 를 계산 한 다음 에 대각 의 바둑 알 수 를 더 하면 5 는 5 자 연결선 이 있다 는 것 을 설명 한다.
주요 함수 중 세 가지 주요 실현 함수 사용:

Showboard(board, ROW, COL);//    
Playermove(board, ROW, COL, cur);//    ,cur        
Judge(board, ROW, COL);//  5   
Getcount(board[][COL], row, col, dir)//    dir     
코드
헤더 파일

#ifndef __FIVECHREE_H__
#define __FIVECHEE_H__


#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)

#define ROW 10//    
#define COL 10//    
#define INIT '*'//     

#define PLAYER1 1
#define PLAYER2 2
#define NEXT 3//     
#define DRAW 4//       

//8   
#define UP 10
#define RIGHT_UP 11
#define RIGHT 12
#define RIGHT_DOWN 13
#define DOWN 14
#define LEFT_DOWN 15
#define LEFT 16
#define LEFT_UP 17

extern void Menu();
extern void Game();

#endif
주 함수 원본 파일

#include"fivechree.h"
int main(){
 int quit = 0;
 while (!quit){
  Menu();
  int select = 0;
  scanf("%d", &select);
  switch (select){
  case 1:
   Game();
   break;
  case 2:
   quit = 1;
   break;
  default:
   printf("Enter Error!
"); break; } } printf("Byebye
"); system("pause"); return 0; }
함수 정의 원본 파일

#include"fivechree.h"

static int x = 0;
static int y = 0;

void Menu(){
 printf("+---------------------+
"); printf("+- 1.Play 2.Exit -+
"); printf("+---------------------+
"); printf("Please Enter Your Select#"); } static void Showboard(int board[][COL], int row, int col){// o 1 ,x 2 system("cls"); for (int i = 0; i < row; i++){ for (int j = 0; j < col; j++){ switch (board[i][j]){ case PLAYER1: board[i][j] = 'o'; break; case PLAYER2: board[i][j] = 'x'; break; case 0: board[i][j] = INIT; break; default: break; } } } printf(" "); for (int i =1; i <= row; i++){ printf("%2d ", i); } printf("
"); for (int i = 1; i <= row; i++){ printf("%-2d", i); for (int j = 1; j <= col; j++){ printf(" %c ", board[i - 1][j - 1]); } printf("
"); } } static void Playermove(int board[][COL], int row, int col, int who){// ,who while (1){ printf("Please Enter PLAYER%d Postion<x,y>#", who); scanf("%d %d", &x, &y); if (x<1 || x>row || y<1 || y>col){ // printf("Postion is error!
"); continue; } if (board[x - 1][y - 1] == INIT){// board[x - 1][y - 1] = who; break; } printf("Postion is not empty
"); } } static int Getcount(int board[][COL], int row, int col, int dir){// 8 int _x = x;//_x,_y , x,y int _y = y; int count = 0; while (1){ switch (dir){ case UP: _x--; break; case DOWN: _x++; break; case LEFT: _y--; break; case RIGHT: _y++; break; case RIGHT_UP: _x--, _y++; break; case RIGHT_DOWN: _x++, _y++; break; case LEFT_DOWN: _x++, _y--; break; case LEFT_UP: _x--, _y--; break; default: break; } if (_x>=1 || _x<=row || _y>=1 || _y<=col){// if (board[x-1][y-1] == board[_x-1][_y-1]){ //printf("yes
"); count++; } else{ //printf("no
"); break; } } else{ return count; } } return count; } // : 8 ( , , , , , , , ) // , , 5 5 static int Judge(int board[][COL], int row, int col){ int count1 = Getcount(board, row, col, UP)\ + Getcount(board, row, col, DOWN); //printf("%d
", count1); if (count1 >= 4){ return board[x-1][y-1]; } count1 = Getcount(board, row, col, RIGHT_UP)\ + Getcount(board, row, col, LEFT_DOWN); //printf("%d
", count1); if (count1 >= 4){ return board[x-1][y-1]; } count1 = Getcount(board, row, col, RIGHT)\ + Getcount(board, row, col, LEFT); //printf("%d
", count1); if (count1 >= 4){ return board[x-1][y-1]; } count1 = Getcount(board, row, col, RIGHT_DOWN)\ + Getcount(board, row, col, LEFT_UP); if (count1 >= 4){ return board[x-1][y-1]; } for (int i = 0; i < row; i++){// for (int j = 0; j < col; j++){ if (board[i][j] == INIT){ return NEXT; } } } return DRAW; } void Game(){ int board[ROW][COL] = { 0 }; //memset(board, INIT, ROW*COL); int result = 0; int cur = PLAYER1; Showboard(board, ROW, COL);// while (1){ //Showboard(board, ROW, COL); Playermove(board, ROW, COL, cur); Showboard(board, ROW, COL);// board , result = Judge(board, ROW, COL); if (result != NEXT){ break; } cur = (cur == PLAYER1 ? PLAYER2 : PLAYER1);// , PLAYER1 ? PLAYER2 : PLAYER1 } Showboard(board, ROW, COL); switch (result){ case 'o': printf("Player1 Win!
"); break; case 'x': printf("Player2 Win!
"); break; case DRAW: printf("Tie Game!
"); break; default: //printf("%c
", result); printf("BUG
"); break; } }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기