c语言编写五子棋报告,C语言编写五子棋游戏
本文实例为大家分享了C语言编写五子棋游戏的具体代码,供大家参考,具体内容如下
一、构建棋盘
首先可以用一个二维数组来构建棋盘,下标表示位置,内容表示黑子白子或者空位。当数组内容为1时,该位置为白字,当数组为0时,该位置为白子,空位输出+
int w[11][11], flag = 0;
int a, b;
for (int k = 0; k < 11; k++)
printf("第%d列\t", k);
printf("\n");
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (w[i][j] == 0) printf("黑\t");
else if (w[i][j] == 1) printf("白\t");
else printf("+\t");
}
printf("第%d行\n\n", i);
}
二、判断位置超范围与错误输入
当输入的棋子坐标超出范围或者该位置已经存在棋子,则再次输入棋子坐标。其中flag作为标志作为判别黑手白手的标志。
if (flag == 0) {
printf("黑色下棋\n");
scanf("%d %d", &a, &b);
while (a < 0 || a>10 || b < 0 || b>10) {
printf("此位置超出范围,请重新输入:");
scanf("%d %d", &a, &b);
}
while (w[a][b] == 0 || w[a][b] == 1)
{
printf("此位置已有棋子,请重新输入:");
scanf("%d %d", &a, &b);
}
flag = 1;
w[a][b] = 0;
}
else {
printf("白色下棋\n");
scanf("%d %d", &a, &b);
while (a < 0 || a>10 || b < 0 || b>10) {
printf("此位置超出范围,请重新输入:");
scanf("%d %d", &a, &b);
}
while (w[a][b] == 0 || w[a][b] == 1)
{
printf("此位置已有棋子,请重新输入:");
scanf("%d %d", &a, &b);
}
三、判断胜负
在五子棋中,出现五个棋子排成一排或者一列或者斜排即可判为胜出。每当落下一个棋子,对该棋子前后上下斜排五个棋子进行判别,超过五个连续的一样颜色的棋子则胜出。
int A = 1, B = 1, jieguo = 0, C = 1, D = 1;
int x = 1, y = 1, m = 1, n = 1;
if (w[a][b] == 1) {
for (int i = 1; i < 5; i++) {
if (w[a][b + i] == 1) A++;
else break;
}
for (int i = 1; i < 5; i++) {
if (w[a][b - i] == 1) A++;
else break;
}
for (int i = 1; i < 5; i++)
{
if (w[a+i][b] == 1) C++;
else break;
}
for (int i = 1; i < 5; i++)
{
if (w[a - i][b] == 1) C++;
else break;
}
if (A > 4 || C > 4) jieguo = 1;//白棋胜利标志
else {
for (int i = 1; i < 5; i++) {
if (w[a+i][b + i] == 1) x++;
else break;
}
for (int i = 1; i < 5; i++) {
if (w[a-i][b - i] == 1) x++;
else break;
}
for (int i = 1; i < 5; i++)
{
if (w[a + i][b-i] == 1) y++;
else break;
}
for (int i = 1; i < 5; i++)
{
if (w[a - i][b+i] == 1) y++;
else break;
}
if (x > 4 || y > 4) jieguo = 1;
}
}
if (w[a][b] == 0) {
for (int i = 1; i < 5; i++) {
if (w[a][b + i] == 0) B++;
else break;
}
for (int i = 1; i < 5; i++) {
if (w[a][b - i] == 0) B++;
else break;
}
for (int i = 1; i < 5; i++)
{
if (w[a + i][b] == 0) D++;
else break;
}
for (int i = 1; i < 5; i++)
{
if (w[a - i][b] == 0) D++;
else break;
}
if (B > 4 || D > 4) jieguo = 2;//黑棋胜利标志
else {
for (int i = 1; i < 5; i++) {
if (w[a + i][b + i] == 0) m++;
else break;
}
for (int i = 1; i < 5; i++) {
if (w[a - i][b - i] == 0) m++;
else break;
}
for (int i = 1; i < 5; i++)
{
if (w[a + i][b - i] == 0) n++;
else break;
}
for (int i = 1; i < 5; i++)
{
if (w[a - i][b + i] == 0) n++;
else break;
}
if (m > 4 || n > 4) jieguo = 2;
}
}
程序完成
四、演示结果
五、源代码
int main() {
int w[11][11], flag = 0;
int a, b;
while (1) {
if (flag == 0) {
printf("黑色下棋\n");
scanf("%d %d", &a, &b);
while (a < 0 || a>10 || b < 0 || b>10) {
printf("此位置超出范围,请重新输入:");
scanf("%d %d", &a, &b);
}
while (w[a][b] == 0 || w[a][b] == 1)
{
printf("此位置已有棋子,请重新输入:");
scanf("%d %d", &a, &b);
}
flag = 1;
w[a][b] = 0;
}
else {
printf("白色下棋\n");
scanf("%d %d", &a, &b);
while (a < 0 || a>10 || b < 0 || b>10) {
printf("此位置超出范围,请重新输入:");
scanf("%d %d", &a, &b);
}
while (w[a][b] == 0 || w[a][b] == 1)
{
printf("此位置已有棋子,请重新输入:");
scanf("%d %d", &a, &b);
}
flag = 0;
w[a][b] = 1;
}
int A = 1, B = 1, jieguo = 0, C = 1, D = 1;
int x = 1, y = 1, m = 1, n = 1;
if (w[a][b] == 1) {
for (int i = 1; i < 5; i++) {
if (w[a][b + i] == 1) A++;
else break;
}
for (int i = 1; i < 5; i++) {
if (w[a][b - i] == 1) A++;
else break;
}
for (int i = 1; i < 5; i++)
{
if (w[a+i][b] == 1) C++;
else break;
}
for (int i = 1; i < 5; i++)
{
if (w[a - i][b] == 1) C++;
else break;
}
if (A > 4 || C > 4) jieguo = 1;//白棋胜利标志
else {
for (int i = 1; i < 5; i++) {
if (w[a+i][b + i] == 1) x++;
else break;
}
for (int i = 1; i < 5; i++) {
if (w[a-i][b - i] == 1) x++;
else break;
}
for (int i = 1; i < 5; i++)
{
if (w[a + i][b-i] == 1) y++;
else break;
}
for (int i = 1; i < 5; i++)
{
if (w[a - i][b+i] == 1) y++;
else break;
}
if (x > 4 || y > 4) jieguo = 1;
}
}
if (w[a][b] == 0) {
for (int i = 1; i < 5; i++) {
if (w[a][b + i] == 0) B++;
else break;
}
for (int i = 1; i < 5; i++) {
if (w[a][b - i] == 0) B++;
else break;
}
for (int i = 1; i < 5; i++)
{
if (w[a + i][b] == 0) D++;
else break;
}
for (int i = 1; i < 5; i++)
{
if (w[a - i][b] == 0) D++;
else break;
}
if (B > 4 || D > 4) jieguo = 2;//黑棋胜利标志
else {
for (int i = 1; i < 5; i++) {
if (w[a + i][b + i] == 0) m++;
else break;
}
for (int i = 1; i < 5; i++) {
if (w[a - i][b - i] == 0) m++;
else break;
}
for (int i = 1; i < 5; i++)
{
if (w[a + i][b - i] == 0) n++;
else break;
}
for (int i = 1; i < 5; i++)
{
if (w[a - i][b + i] == 0) n++;
else break;
}
if (m > 4 || n > 4) jieguo = 2;
}
}
for (int k = 0; k < 11; k++)
printf("第%d列\t", k);
printf("\n");
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (w[i][j] == 0) printf("黑\t");
else if (w[i][j] == 1) printf("白\t");
else printf("+\t");
}
printf("第%d行\n\n", i);
}
if (jieguo == 1) {
printf("白棋胜利");
break;
}
if (jieguo == 2) {
printf("黑棋胜利");
break;
}
}
return 0;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
c语言编写五子棋报告,C语言编写五子棋游戏相关推荐
- C语言实践作业报告,c语言社会实践报告
资料简介 c 语言社会实践报告 c 语言社会实践报告 随着个人素质的提升,越来越多的事务都会使用到报告,报告 中提到的所有信息应该是准确无误的. 相信许多人会觉得报告很难写 吧,下面是为大家的 c 语 ...
- c语言编写五子棋报告,c语言报告五子棋.pdf
C 语言课程设计报告 c 题目: 简单的 五子棋 设计者: 方阳 专业班级: 软件工程1303班 学号: 311309060324 指导老师: 刘洁 所属系部: 计算机学院 2014年6月25 日 河 ...
- c语言初步实验报告,c语言实验报告(大一c语言实验报告答案)
哪位帮我一下啊,我这有个作业,要写C语言程序设计实验报告,包括五个部. 最低0.27元/天开通百度文库会员,可在文库查看完整内容> 原发布者:aming7728081 计算机科学与技术系C语言实 ...
- 华北科技c语言综合实验报告,C语言综合性实验报告1.doc
C语言综合性实验报告1.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档 ...
- c语言专业实习报告,C语言个人实习报告(范文1)
<C语言个人实习报告.doc>由会员分享,可免费在线阅读全文,更多与<C语言个人实习报告>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索. 1.好的学 ...
- c语言四则运算实验报告,c语言四则运算实验报告.doc
c语言四则运算实验报告.doc 课程编号 1300050027 得分教师签名批改日期深 圳 大 学 实 验 报 告课程名称 C语言实验 实验名称 100以内的四则运算游戏 学 院 信息工程学院 指导教 ...
- 杂志订阅管理系统c语言实训报告,C语言程序设计报告—杂志订阅管理软件、、.doc...
C语言程序设计报告-杂志订阅管理软件.. 中国地质大学(武汉)C语言课程设计报告 学 院: 专 业: 题 目: 杂志订阅管理系统 班 级: 姓 名: 学 号: 指导教师: 2011年1月9日 程序在最 ...
- c语言程序设计实验8,c语言程序设计实验报告8_c语言实验报告格式及实验内容_c语言设计报告...
实验名称 计算出1000以内10个最大素数之和 实验目的 1.熟练掌握if.if-else.if-else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和s ...
- c语言考试系统设计报告,c语言课程设计报告单项选择题标准化考试系统.doc
c语言课程设计报告单项选择题标准化考试系统.doc <C语言程序设计>课程设计题目:单项选择题标准化考试系统专业:计算机科学与技术班级:计科1001目录<C语言程序设计>课程设 ...
- c语言程序实习报告,c语言程序设计实习报告程序
<c语言程序设计实习报告程序>由会员分享,可在线阅读,更多相关<c语言程序设计实习报告程序(12页珍藏版)>请在人人文库网上搜索. 1.include stdio.h/* 定义 ...
最新文章
- 【ACM】二叉搜索树(Binary Search Tree /BS Tree) 小结
- python操作neo4j
- 【c语言】蓝桥杯算法提高 统计平均成绩
- android手势放大自动还原,ImageView通过matrix实现手势缩放,放大,缩小 ,移动
- 查看端口被占用,被结束此端口占用
- Python基础教程(十):CGI编程、MySQL数据库
- Client does not support authentication protocol requested by server;
- RPC实现Provider服务端业务逻辑
- Hibernate- QBC-基本查询
- 腾讯云加入自媒体分享计划可以免费领取.cn域名啦
- Python画板画图之美
- win7纯净版系统锁定系统时间的设置方法
- Spring Cloud微服务之Mybatis-Plus代码生成器整合(四)
- mysql启动失败2005_数据库2005服务启动不了
- 任正非:华为不会拆分;以色列公司称可解锁所有 iOS 设备;Java 13 要来了! | 极客头条...
- 小规模零申报完整报税流程
- 计算机双人游戏玩不了,PC上的双人单机游戏
- 杭州第二机场选址的三个备选方案仁和、瓶窑、塘栖中选择瓶窑的理由。元芳,你怎么看?
- java-家庭作业3
- 常规配置中的CAN模块操作