c项目之三子棋双人版

188人阅读 评论(0) 收藏 举报

三子棋双人版
    包含一个头文件threeChess.h和两个源文件(main.c和threeChess.c)
//threeChess.h
#ifndef _THREECHESS_H_
#define _THREECHESS_H_

#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>

#pragma warning(disable:4996)

#define ROW 3
#define COL 3

void game();


#endif
//main.c
#include"threeChess.h"


int main()
{
	int num;
	do{
		printf("******************************************\n");
		printf("**********欢迎访问三子棋双人版!**********\n");
		printf("****  input 1:play!   input 0:exit!  *****\n");
		printf("******************************************\n");
		printf("please select:");
		scanf("%d", &num);
		switch (num)
		{
		case 0:
			exit(0);
		case 1:
			game();
			continue;
		default:
			printf("input error! try again.\n");
			break;
		}
	} while (1);

	system("pause");
	return 0;
}
//threeChess.c
#include"threeChess.h"

char triChe[ROW][COL];

//输出棋盘
void outputCheckerBoard()
{
	int i = 0;
	printf("\t");
	for (i = 0; i < COL; i++){
		printf("%d\t", i);
	}
	printf("\n");
	for (i = 0; i < ROW; i++){
		printf("%d\t", i);
		for (int j = 0; j < COL; j++){
			printf("%c\t", triChe[i][j]);
		}
		printf("\n\n");
	}
}

int isFull()
{
	char *p = &triChe[0][0];
	for (int i = 0; i < ROW*COL; i++){
		if (*(p + i) == '_'){
			return 0;
		}
	}
	return 1;//平局
}

int judge()
{
	//判断行
	int i = 0;
	for (; i < ROW; i++){
		if ((triChe[i][0] != '_') && (triChe[i][0] == triChe[i][1]) && \
			(triChe[i][1] == triChe[i][2])){
			return triChe[i][0];
		}
	}
	//判断列
	for (i = 0; i < COL; i++){
		if ((triChe[0][i] != '_') && (triChe[0][i] == triChe[1][i]) && \
			(triChe[1][i] == triChe[2][i])){
			return triChe[0][i];
		}
	}
	//判断斜线
	if ((triChe[1][1] != '_') && \
		(((triChe[0][0] == triChe[1][1]) && (triChe[1][1] == triChe[2][2])) || \
		((triChe[0][2] == triChe[1][1]) && (triChe[1][1] == triChe[2][0])))){
		return triChe[1][1];
	}

	if (isFull()){
		return 1;//平局
	}
	return 0;
}


void play(int i)
{
	int line, column;
		system("cls");
		outputCheckerBoard();
	loop:
		printf("player %c:please input the position of your chess pieces!\n", i % 2 + 65);
		scanf("%d%d", &line, &column);
		if (line > 2 || column > 2){
			printf("the position out of bounds!\n");
			goto loop;
		}else if (triChe[line][column] != '_'){
			printf("There are already pieces in this position!\n");
			goto loop;
		}else{
			triChe[line][column] = i % 2 + 65;
		}
}

void game()
{
	memset(triChe, '_', ROW*COL);
	int i = 0;
	int result;
	do{
		play(i++);
		result = judge();
		if (result != 0){
			break;
		}
		play(i++);
	} while (result == 0);

	system("cls");
	outputCheckerBoard();
	switch (result){
	case 1:
		printf("平局!\n");
		return;
	case 65:
		printf("A胜!\n");
		return;
	case 66:
		printf("B胜!\n");
		return;
	}
}




查看评论

六子棋 程序 c++

  • 2009年11月04日 17:27
  • 3.03MB
  • 下载

C语言 贪吃蛇双人对战版

  • 2014年10月31日 21:52
  • 20KB
  • 下载

c语言版本双人贪吃蛇

#include #include #include #include using namespace std; #define WIDTH 64 // 游戏区域网格宽度...
  • sum_TW
  • sum_TW
  • 2016-08-09 07:14:59
  • 1068

立体井字棋

【问题描述】 你玩过井字棋游戏吗?它的英文名字叫做tic-tac-toe,是一个古老的博弈游戏。游戏在一个3×3的棋盘上进行。游戏约定,先在同一条线(横线、纵线或斜线)上占有3枚棋子者得胜。尽管现在...
  • SSLGZ_yyc
  • SSLGZ_yyc
  • 2017-08-18 15:10:57
  • 133

VC版双人俄罗斯方块源代码

  • 2015年11月05日 23:53
  • 6.07MB
  • 下载

用C语言编写三子棋的具体分析

在做这个三子棋时的时候首先我们该细心分析好我们应该做的每一部然后再用对应的函数实现。 首先下三子棋应该需要这么几步: 1.在屏幕打印出一个棋盘; 2.人移动棋子; 3.检查输赢; 4.电脑移动棋子; ...
  • Cell_KEY
  • Cell_KEY
  • 2016-04-09 23:03:37
  • 1147

三子棋游戏(c语言实现)

一说到写个三子棋游戏,首先我们得想到有个棋盘初始化和棋盘打印函数。 接下来,玩游戏阶段,人玩游戏,电脑玩游戏,各写一个函数,每次下完棋都得判断有没有人赢了游戏,若有人赢了,游戏退出,否则继续游戏。在这...
  • peiyao456
  • peiyao456
  • 2016-03-28 23:01:43
  • 2443

c语言 三子棋/井字棋 算法源代码并讲解

用了这好几天的时间在闲暇时间写了一个小时候玩的井字棋,或者叫三子棋的小游戏,来娱乐娱乐,虽然是黑白框,并且电脑有点傻之外,一切良好。          首先写之前就要先明白思路,这个棋盘要放到一个二维...
  • yangjinkui
  • yangjinkui
  • 2016-10-12 01:10:26
  • 8415

四子棋游戏系统【C语言源代码 + 课程设计报告】

  • 2011年02月27日 11:46
  • 1.23MB
  • 下载

C语言实现三子棋游戏

先直接上代码:#define _CRT_SECURE_NO_WARNINGS 1#include //2.实现三子棋游戏。 #include //Sleep() RAND_...
  • ljx_5489464
  • ljx_5489464
  • 2015-12-17 15:18:41
  • 2447
    个人资料
    持之以恒
    等级:
    访问量: 6842
    积分: 450
    排名: 11万+
    文章分类
    最新评论