c语言课程.docx

上传人:b****7 文档编号:9435009 上传时间:2023-02-04 格式:DOCX 页数:13 大小:114.70KB
下载 相关 举报
c语言课程.docx_第1页
第1页 / 共13页
c语言课程.docx_第2页
第2页 / 共13页
c语言课程.docx_第3页
第3页 / 共13页
c语言课程.docx_第4页
第4页 / 共13页
c语言课程.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

c语言课程.docx

《c语言课程.docx》由会员分享,可在线阅读,更多相关《c语言课程.docx(13页珍藏版)》请在冰豆网上搜索。

c语言课程.docx

c语言课程

C语言程序设计

 

题目五子棋(双人对战)

指导教师

学生姓名

学号

专业

教学单位物理系(盖章)

目录

1设计内容与设计要求……………………………………1

1.1系统功能简介………………………………………1

1.2系统运行环境………………………………………1

2程序流程图………………………………………………1

3运行的运行及说明………………………………………2

3.1系统的运行…………………………………………2

3.2运行说明……………………………………………4

4课程设计目的………………………………………………….

5程序特色…………………………………………………….5

6总结………………………………………………………5

附件:

源程序清单……………………………………………5

 

1设计内容与设计要求

1.1系统功能简介

该系统是五子棋的人人对战模式,而非平常的人机对战

系统有简单的菜单界面

1.2系统运行环境

Vc++6.0下运行,硬件基本无要求,现在的计算机系统基本都可以运行该系统。

2程序流程图

开始

白子落棋

判断白子是否有五个在一条直线上

是输出白子获胜

黑子落棋

判断黑子是否有五个在一条直线上

若是输出黑子获胜

否继续循环

3系统的运行及说明

3.1系统的运行

图3-1程序的初始化界面

程序初始化的界面,界面简洁明快,便于观察。

图3-2程序的运行界面

图3-3程序的介绍界面

3-2运行说明

A向左W向上D向右S向左空格键确定当结束时按Y重新开始游戏按N退出游戏

4课程设计目的

五子棋游戏不仅能增强人们的抽象思维能力、逻辑推理能力、空间想象力,提高人们的记忆力、心算能力等,而且深含哲理,有助于修身养性。

五子棋既有现代休闲方式所特有的特征“短、平、快”,又有中国古典哲学所包含的高深学问“阴阳易理”;它既有简单易学的特点,为人民群众所喜闻乐见,又有深奥的技巧;既能组织举办群众性的比赛、活动,又能组织举办高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观,它是中西方文化的交融点,也是中西方文化交流的一个平台。

自从计算机作为游戏对战平台以来,各种棋类游戏如雨后春笋般纷纷冒出。

五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。

同时具有简单易学、既动手又动脑的特点。

同时也为锻炼自己的编程能力。

5程序特色

本程序简洁明快,采用黑白两色棋,并且本程序为双人对战。

6总结

通过这次实习,让我们初步有了编写系统的能力,我们对很多的函数有了新的认识,也学会了运用多种函数,也明白了编写软件的基本过程,和基本方法。

编写软件的过程中我们又学到了曾经自己不知道的函数或是自己不会的函数的用法。

这次课程设计课总的来说让我受益匪浅。

在这几天的编写过程中我们对c语言有了更进一步的认识和了解。

此次编程过程的经验和知识肯定能促进我以后的学习。

此次课程设计不仅给了我们很多很好的经验,也让我们体会到了失败时的焦急和难受,也体会到了成功时的兴奋与喜悦。

附件:

源程序清单

#include

#include

#include

voidmain()

{

//q:

20*20棋盘数据数组,0表示空,1表示黑棋,2表示白棋

//h:

游戏状态量,变化范围为0、1、2,0表示退出游戏,1表示初始化游戏数据,2表示进行游戏

//i:

循环辅助量

//j:

键盘输入结果

//k:

从二维坐标得到的一维数组下标

//l:

黑白子变化辅助量,变化范围为1、2,1为当前下的是黑棋,2为当前下的的是白棋

//m:

输赢判断结果,变化范围为0、1、2,0表示没有输赢,1表示黑棋赢,2表示白棋赢

//x:

游标的X坐标

//y:

游标的Y坐标

charq[400];

inth,i,j,k,l,m,x,y;

//第一次进入游戏循环,首先初始化游戏数据

h=1;

while(h)

{

if(h==1)

{

//初始化棋盘

for(i=0;i<400;++i)

q[i]=0;

//初始化黑白子变化辅助量,黑棋先行

l=2;

//初始化输赢判断结果,当前没有输赢

m=0;

//初始化游标坐标

x=y=0;

//初始化完毕进行游戏

h=2;

}

else

{

//清屏

system("cls");

//绘制棋子、棋盘

for(i=0;i<400;++i)

{

if(y*20+x==i)

{

if(q[i]==1)

printf("■");

elseif(q[i]==2)

printf("□");

else

printf("◎");

}

else

{

if(q[i]==1)

printf("●");

elseif(q[i]==2)

printf("○");

else

{

if(i==0)

printf("┏");

elseif(i==19)

printf("┓");

elseif(i==380)

printf("┗");

elseif(i==399)

printf("┛");

elseif(i>0&&i<19)

printf("┳");

elseif(0==i%20)

printf("┣");

elseif(19==i%20)

printf("┫");

elseif(i>380&&i<399)

printf("┻");

else

printf("╋");

}

}

if(19==i%20)

printf("\n");

}

//接收输入

j=_getch();

//更新游标坐标

if(y>0&&(j=='w'||j=='W'))

--y;

if(y<19&&(j=='s'||j=='S'))

++y;

if(x>0&&(j=='a'||j=='A'))

--x;

if(x<19&&(j=='d'||j=='D'))

++x;

//下子

if(j=='')

{

//从二维坐标转换到一维数组索引

k=y*20+x;

//设置数据

if(0==q[k])

q[k]=(l=(l==2)?

1:

2);

//设置胜负判断结果

m=0;

//左右胜负判断

for(i=-4;i<1;++i)

{

//边界判断

if(x+i<0||x+i+4>19)

continue;

else

{

//得到最左边棋子的索引

k=y*20+x+i;

//连棋判断,若成立则修改胜负判断结果

if(q[k]==q[k+1]&&

q[k+1]==q[k+2]&&

q[k+2]==q[k+3]&&

q[k+3]==q[k+4])

{

m=l;

break;}}}

//上下胜负判断

for(i=-4;i<1;++i)

{

//边界判断

if(y+i<0||y+i+4>19)

continue;

else

{

//得到最上边棋子的索引

k=(y+i)*20+x;

//连棋判断,若成立则修改胜负判断结果

if(q[k]==q[k+20]&&

q[k+20]==q[k+40]&&

q[k+40]==q[k+60]&&

q[k+60]==q[k+80])

{

m=l;

break;}}}

//左上右下胜负判断

for(i=-4;i<1;++i)

{

//边界判断

if(x+i<0||x+i+4>19||y+i<0||y+i+4>19)

continue;

else

{

//得到最左上边棋子的索引

k=(y+i)*20+x+i;

//连棋判断,若成立则修改胜负判断结果

if(q[k]==q[k+20+1]&&

q[k+20+1]==q[k+40+2]&&

q[k+40+2]==q[k+60+3]&&

q[k+60+3]==q[k+80+4])

{

m=l;

break;}}}

//左下右上胜负判断

for(i=-4;i<1;++i)

{

//边界判断

if(x+i<0||x+i+4>19||y-i>19||y-i-4<0)

continue;

else

{

//得到最左下边棋子的索引

k=(y-i)*20+x+i;

//连棋判断,若成立则修改胜负判断结果

if(q[k]==q[k-20+1]&&

q[k-20+1]==q[k-40+2]&&

q[k-40+2]==q[k-60+3]&&

q[k-60+3]==q[k-80+4])

{

m=l;

break;}}}}

//胜利结果选择

if(m!

=0)

{

//打印胜利结果

if(m==1)

printf("白棋胜利!

\n");

else

printf("黑棋胜利!

\n");

//用户输入选择

do

{

printf("重新游戏请按Y,退出游戏请按N:

\n");

j=_getch();

}while(j!

='y'&&j!

='Y'&&j!

='n'&&j!

='N');

//根据选择设置游戏状态

if(j=='y'||j=='Y')

h=1;elseh=0;}}}}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1