趣味数学游戏五子棋

2022-10-10

第一篇:趣味数学游戏五子棋

数学趣味游戏

阿凡提智斗巴依

数学小游戏:猜数游戏

取1到12个数,把它们沿一个圆圈摆好。无论谁从这个圆圈里暗定一个数,都能够很快地把它猜出来。当然,也可以用12张扑克牌猜暗定的牌点,还可以拿一个时钟来猜暗定的钟点。

好。现在你让一个小朋友,在心里暗定圆圈中的一个数。然后,你在这个圆圈上给他指定任意一个数,并用心算把这个数加上 12 (这可是个秘密,不能让人知道),算好了,你大声说出这个数,就让暗定数的人,从他自己确定的数默数起,要求在心里默数的时候,从你指定的那个数开始数,沿圆圈反时针方向挨个数过去,一直数到你大声说出的那个数为止。这样,就正好停在他暗定的数上。

假定小朋友暗定圆圈中的数是5,你指定的数是9,把12与9用心算加起来,得21。然后,你对他说:“请你默数,由你指定的那个数数起,从9开始数,沿反时针方向,依次数过去。当数到21,你就停下来。”他从5那里开始,由数9数起,

9、

10、11„„数到21,就会停在他暗定的数5上。这个游戏有点唬人。其实,道理简单。从 5到9是这样数:

5、

6、

7、

8、9;从9到5,也得经过这几个数:

9、

8、

7、

6、5.只是要倒过来数。加12,再数一圈,又回到同一个数5。

明白了道理,还可以编出许多更有趣的游戏。例如暗定

5、指定9,你就可以变个花样,说:“现在,我敲桌子。敲第一下,你在心里,把你暗定的数加 1。敲第二下,你再加1。这样如下去,当加到21时,你就大声说21。”这时,你停止敲桌子,就可以指出他暗定的数是5。

为什么你准能指出 5呢?因为你在敲桌子的时候,在心里数着

1、

2、

3、„„他说“21”时,你数到16。考虑到他是从 9数起,要是从 5数起,那你应数到17。然后,你由9那里开始,反时针方向从1数到17,就数到了5。

趣味数学——阿凡提智斗巴依(一年级)

一年级趣味数学

巴依(地主)有一个果园,共有49棵果树,每行7棵,共7行,正好排成一个正方形。如下图:(符号*表示一棵树)

一天,巴依嫌果树长得太密,影响生长,想砍掉一些。于是他叫来了长工,对长工说:“只留5行,每行4棵,把其余的都砍掉。”说完就走了。长工平日恨透了巴依,很想找机会教训教训他。长工正准备应付巴依时,只见阿凡提骑着小毛驴,哼着歌来了。长工马上把自己的心事告诉了阿凡提,请他给想个办法来教训一下巴依。阿凡提看了一下这些果树的排法,灵机一动,想出个办法告诉了长工,长工一听高兴极了,举起大斧砍了起来。不一会儿,巴依来查看,他一看就火了,大骂长工混蛋。原来果树差不多给砍光了。剩下的只有10棵,砍掉了39棵。他怒气冲冲地问长工:“你为什么砍掉这么多?不是要你留下20棵吗?”长工回答说,“我的东家老爷,您并没有说留下20棵呀!您不是说留5行,每行4棵吗?您看,我是遵命照办的呀!”巴依一看,的确是留了5行,每行4棵。尽管他气得火冒三丈,可也无话可说。

阿凡提告诉长工的巧妙方法是怎样的呢?小朋友们,试画画看。 数学童话故事:数学迷就医记之紧急抢救

数学童话故事

“嘟”一辆形状奇特的救护车开出了数学学校,发病的是数学迷——迷迷。

救护车在一幢漂亮的大楼前停了下来,大楼正面挂着一个大牌子,上面写着“儿童数学医院”几个大字。

医院各部门迅即亮起了信号灯,一位数字大夫手拿数学温度计,轻轻地塞进了迷迷的嘴里。

没等数字大夫开腔,迷迷忽然狂叫起来:“我,我会读这个数,这个数是一百万一十万一万一千一百;一千一百一十应写成 100010010,你们不要笑,我没错、没错??”

“快,快把冷冻数字枕头拿来,这孩子正在发高烧。”数字大夫命令说。

香擦皮护士迅速地拿来冷冻数字枕头,垫到迷迷头下。

数字大夫说:“这孩子初步确定患了数位概念混淆症。”说完,数字大夫按了按墙上的电钮,迷迷头下的数字枕头亮了三下,从外面看到枕头里排列着许许多多数字,它们运动着,组合着,使数学迷烦躁的心渐渐地平静了数字大夫耐心地对迷迷说:“你在读数写数方面有许多毛病,你看!”数字大夫指着墙上一个数字说:“读数应该从高位起一级一级地读,像1111100 这个数,应该读成一百一十一万一千一百,而你却读成一百万一十万一万一千一百。”数字大夫指着另一个数字说:“写数应该从高位起,按数位顺序一位一位地写,你却把一千一百一十写成 100010010。正确的写法是1110。”

迷迷眨了眨眼睛,还没完全反应过来。“叮铃铃”一阵铃响,护士急匆匆地送来化验单,数字大夫看完化验单不禁“啊”地叫了一声。

究竟发生了什么情况?请看下回。

数学童话故事:数学迷就医记之摄像化验

数学童话故事

“病情严重!”数字大夫看着刚送来的化验单上三个红红的“+”字脱口而出。

数字大夫果断地说:“快!快送电视化验室。”

“叮铃铃”一响,迷迷被电梯送上了8楼——电视化验室。

这是一个十分漂亮而又舒适的现代化实验室。室内有一台自动摄像机,还有一台彩色电视播放机。

“好!开始!”电视摄像机发出了“嗞嗞”的轻微声音,电视机也随即显出了图像。

屏幕上,再现了迷迷头脑里有一个跳跳蹦蹦的“+”号,接着又跳出几个“+”号。忽然,右上角出现一个古里古怪的人影,又胖又大,那家伙一下窜到“+”号中间,抓住一个就走??

“哎呀,我头疼死了!”迷迷大声喊叫起来。

胖家伙抓住一个“+”号,疯狂地吼道:“我叫‘多’,题目中有‘多’就用‘+’,你快跟我走!”

“不行!”一个“+”号在“多”手中挣扎着,“我不去!我不去!数学妈妈讲过,题目中有‘多’不一定用加法。”

“胡说!你看,求比8多5的数是多少,不是用加法吗?”“多”气势汹汹地说。

“求8比5多多少,就不应该用加法。”一个“+”字理直气壮地回答。

“我不信!”“多”字不肯罢休。“+”号使出最后一招,说:“我有8个苹果,你有5个苹果,我比你多几个?”

“多3个。”“多”字说。“你是用什么方法算的?”“+”号问。

“是用8减5算出来的。”“多”的声音很低。

“那么,是不是有‘多’就是加呢?”“+”号反问道。

“这??”

“哎呀,我头疼什么时候能好啊?”迷迷大声哭了起来。

请看下回。

数学童话故事:数学迷就医记之X 透视室

数学童话故事

护士长香擦皮阿姨带着迷迷到住院处登记。住院部主任说:“这个小病人要去做一下 X 透视。”X 透视室黑呼呼的,只开着一盏小灯。迷迷有点害怕,想站起来。“别动,坐好!马上开始透视。”透视医生命令说。一会儿,透视医生拿来一张透视片对迷迷说:“毛病全在上面。”透视医生问迷迷:“你知道18+X=30中,X怎么求吗?”

“知道,求加数用减法。X=30-18,X=12。”迷迷回答。“那么,X-5=18中,X怎么求呢?”

“用加法,X=5+18,X=23。”

“18—X=5,X又怎么求呢?”

“X=18+5,X=23。”

“啊!”透视医生停了一下说,“你把X=23代到原式18-X=5中验算一下,看看对不对?”

迷迷吞吞吐吐地说:“18-23 等于??”“不对了吧!”透视医生说:“X 是未知数,我们在求出 X 的值后,一定要把它代进原式中去检验,看计算是不是正确。”接着,透视医生又对香擦皮护士解释说:“这上面最严重的毛病正是,求减数用加法。减数是加法中的一个加数,只能用被减数减去差,才能得到减数。”

香擦皮护士拿起透视片说了声谢谢,就带着迷迷去病房了。请看下回。

数学童话故事:数学迷就医记之进行手术

数学童话故事

迷迷被送进一个现代化的手术室。

主治医生通过电视屏幕进行指挥。三个机器人各操作一台病情探索机,一台病源透视机,和一台手术治疗机。

迷迷躺在床上,给打了一针麻醉剂,渐渐进入昏迷状态。

病情探索机迅速在迷迷全身进行电子扫描:“报告!报告!发现奇怪的得数!”病情探索机发出信号:

“报告!病源查到!”病源透视机发出信号:错用退一当十。

手术治疗机立即开始工作,消除错误得数,补上正确结果。变成了:

“报告!”病情探索机又发出信号:

“查明病源!”病源透视机发出信号:

错把被减数百位上的0当作9。

“立即手术!”

手术治疗机迅速纠正了错误,改为:

“报告!发现第三个疑点!”病情探索机又发出信号:

病源透视机立即查出原因:概念不清,错用末位对齐。

手术治疗机迅速进行了治疗:

“报告!又一个疑点!”病情探索机再次发出信号:

病源透视机查明病源:试商错误,余数不应当比除数大。

“快!切除夹在商中间的‘1’!”主治医生命令手术治疗机。

“手术完毕!商是72。”??

10分钟后,手术做完了。迷迷睁开眼睛,主治医生打开录像机,刚才的手术过程又一一显示出来。迷迷一看,大吃一惊,原来这都是平时学习中的毛病。迷迷问医生:“我这些毛病都在手术中治好了吗?”主治医生笑着说:“还要进行各种综合性治疗,才会完完全全地好起来。”

请看下回。

数学童话故事:数学迷就医记之电视治疗

数学童话故事

迷迷用双手紧紧抱住头。这时,化验室里出来一位电视大夫,戴着一副黑色眼镜,坐到电视旁,关闭了室内电灯,打开放像机。“迷迷,下面我用电视给你治病,别紧张,不会疼的。”电视大夫说完电视机屏幕上就有了图像:

这是一个减号,迈着四方步,像一位学者,说:“是呀,加号兄弟说得不错,遇到‘多’不一定要用加法,遇到‘少’,也不一定用减法。像‘甲数是 16,比乙数少 2,求乙数’。这里就不是用减法,而是用 16+2=18。可是,我们的小主人却一见‘少’字就用减。真没办法!”

电视大夫转脸看着迷迷,只见迷迷满脸通红,汗珠大滴大滴地从额头上滚了下来。

电视里又出现了两个受委屈的加号,在伤心地哭着。一边哭一边说:“不是我们要来的,是小主人硬逼我们来的。”

“别以为见到‘一共’两个字就用加法!”模样很凶的乘号、除号指着加号训斥说:“你听着,这两个‘一共’

是你加法能做的吗?”

乘号说:“少先队员植树,每人植8棵,10人一共植树多少棵?应该用乘法。”

“有30个小朋友做游戏,每10人分一组,一共可以分成几组?应该用除法。”除号接着说。

“哎呀,怎么把这两题都做成加法啦!真糊涂呀!”迷迷情不自禁地喊了出来。

电视大夫迅速给护士长一张通知书。上面写着:“该病人概念模糊,思路混乱,建议住院治疗。”

迷迷要住院治疗,究竟后来如何?请看下回。

数学童话故事:数学迷就医记之病房故事

数学童话故事

迷迷来到病房,不大的病房里住满了小病人。迷迷问:“你们怎么也到这里来啦?”“我们都是得数学病才来的呀。”一个胖胖的小朋友说起了他的故事。

“那天,我在商店先买一支5分钱的铅笔,又买3分钱一块的橡皮2块,我给售货员阿姨1角6分钱。阿姨说钱给多了,我一下子愣住了。心想,计算一块铅笔和两块橡皮的钱,用5+3×2,5+3得8,再乘以2,怎么不对呢?售货员阿姨说:‘一支铅笔5分钱,再加上两块橡皮6分钱(3×2),应该是1角1分钱。’”

“在四则混合运算中,如果既有加减法,又有乘除法,要先算乘除法,后算加减法。”录录小朋友指出了胖胖的病根,接着他不好意思地说,“我也有一个西瓜吃人的故事。有一天,爸爸给我算一道题:3个人吃4个西瓜,平均每人吃多少?我脱口就说:‘用 4 除 3。’爸爸突然大笑起来,说‘西瓜吃人啦!西瓜吃人啦!我被弄得莫名其妙,爸爸笑着说:‘你呀,又犯概念混淆的毛病啦,4个西瓜被 3个人吃,应该用 4÷3,读作4 除以 3,或者是3除 4,而你却说用4除 3,如果4除 3写成算式应该是 3÷4,这不是说3个人被4个西瓜吃了吗?’”

小病人一起笑了起来。

查房医生刚走,病房里又热闹起来。丰丰大嗓门讲起了他的故事:“我和奶奶到乡下叔叔家去,奶奶让我先写封信给叔叔,叫他到时候来接我们。我算了算日期就给叔叔写了封信。可是,我和奶奶到乡下那一天,叔叔却没有来接我们。我和奶奶只好在一个村民的帮助下,到了叔叔家。奶奶见了叔叔生气地说:‘我叫丰丰给你写了信,你为什么不接我们?’叔叔一听,笑笑说:‘这可不能怪我呀,丰丰信上写的是2月30日到家??’没等叔叔说完,奶奶瞪了我一眼,‘傻孩子,二月没有30日,平年二月28天,闰年二月29天。’”

“哈哈??真好玩??”虎子拍着手接着说:“我也有一个故事。”

“妈妈买来一段零头布,想给我做两件上衣。她算来算去说不够,我在一旁见了,说:“妈妈,我来帮你算,那段布是3.4米,做一件上衣用2米,3.4÷2=1.7,四舍五入,这段布做两件上衣足够了。’妈妈笑着说:‘傻小子,照你这样算,3 米布也够呀,可是,做出来的衣服你能穿吗?这里不能用四舍五入的方法来取近似值。要用去尾法才行。’”

“对对对!”坐在门口的伟伟说:“我上次解一道汽车运水泥的题目,结果是3.4次,我把0.4舍去了,得数是3次,被老师批评了,老师说,剩下的水泥怎么办呢?”

“是呀,这里就要用‘进一法’了,也就是说剩下水泥再少,也还需一辆汽车来运走才行。”丰丰像个老师一样,说得真清楚,“取近似值有四舍五入法、进一法、去尾法,我们要根据实际情况来决定,要不然就会出错啦。”

病房成了讨论数学问题的课堂,大家你一言我一语,讲得真带劲。

杨希希说:“学校新建教学大楼,需要我们同学搬砖头。事先老师告诉我:砖头堆放处离施工处40米。我按每一米站一个人来计算,让40个同学排成长队传递。结果,最后一个人却要在两米长的地方跑动,怎么也来不及传递。同学们都说我把人数计算错了。”

“你是弄错了。”小病人林林说:“用传递的方法运砖头,两头都要站一个人,这就同植树问题一样,需要的人数应该是40÷1+1=41(人)才对,这叫加一法。”

“对了,对了,还有一个减一法呢!”迷迷说:“一根木头锯3段要用12分钟,锯6段要用几分钟?大家说这题应该怎么做?”

“12÷3×6=24(分钟)。”胖子抢着说。

“不对。”宁宁说,“你想想看,一根木头锯成3段,实际只要锯两次。用减一法,3-1=2。要求锯6段,也要‘减1’,就是6-1=5。这道题目式子应该列成12÷(3-1)×(6-1)才对。”

“好热闹呀!”香擦皮阿姨不知什么时候偷偷地进了病房,她被小病人的热烈讨论迷住了。

她说:“你们讲的这个加

一、减一可不是‘四舍五入’里的近似值噢。还有,在一个圆形的水池旁植树,就不需要加一也不需要减一了。不信你们自己试试看。”

香擦皮阿姨说着,挥了挥手中拿着的东西。“哇!”不知谁喊了一声。

究竟是怎么回事?请看下回。

第二篇:区域游戏五子棋

10:10-10:40 区域游戏

一、活动目标:

1、新增区域中幼儿能迅速接受理解新游戏。

2、大胆选择自己喜欢的游戏材料和游戏内容,自主愉快地游戏。

3、能与同伴合作游戏,积极交流自己的想法。

二、活动准备:

1、经验准备:知道各区域的游戏玩法。

2、物质准备:(1)各区游戏材料如:穿编游戏、飞行棋、小画板等。

(2)新增游戏区域材料如:五子棋

3、区域内容:

(1)公共区域:大舞台、美发屋等。 (2)班级区域:

(3) 美食区(关东煮):肉串、涮炉等。

美食区(面包店):面包、披萨等。

美食区(咖啡店):咖啡机、桌椅等。

动手区(制作区):剪刀、双面胶等。

动手区(编织区):编制篮等。

益智区(好玩的磁铁):磁铁、迷宫板等。

益智区(解锁):锁、钥匙等。

阅读区:书籍,桌椅等。

三、活动过程:

(一)介绍玩法,激发兴趣。

教师:今天我们的益智区有了新的棋类游戏——五子 棋。

五子棋是中国民间的一种棋类小游戏,十分地简单,谁先横排、竖排、斜排列出5个棋子就算获胜。

(在电脑上下载五子棋的小游戏进行演示,并讲解。)

(二)提出要求,注意安全。

师:

游戏前老师有几点要求提醒大家。

1、动手区里做粘贴画时要注意不要把豆子撒在地上,更不能放进鼻子耳朵里。

2、建构区的小朋友在堆摆易拉罐的时候请轻拿轻放。

3、益智区里初学五子棋的小朋友遇到问题主动找老师。

4、要和其他小朋友文明交往、合作,学会谦让。

5、垃圾放在垃圾桶,不可以随地乱丢。

小朋友们坐坐好,坐的好的小朋友先插卡进区。

(三)自主进区,观察记录

1、了解幼儿入区的情况,是否全部入区,情绪如何。

2、关注各区域活动情况,教师适当加入。

3、仔细观察并记录,给予有困难的幼儿帮助。

4、提醒幼儿遵守游戏规则,学会谦让合作。

(四)重点指导手工区——五子棋

(五)结束活动,观察记录。 整理和收拾

督促幼儿收拾整理,做到轻、快、齐,教师协助收拾整理。

(六)游戏评价

(1)讲解与展示

幼儿自己介绍自己的作品,感受成功后的快乐。

(2)交流与发现

让幼儿交流今天的活动,活动中开心的事情和遇到的问题。

(3)小结

表扬与批评,出示活动中拍摄的照片进行点评,提出新要求。

第三篇:五子棋游戏开发总结(C语言版)

五子棋游戏开发总结

一.五子棋游戏概述

二.游戏功能

对弈游戏,自动判断游戏胜负。

采用人机对话模式,界面设计美观友好。

具体玩法:采用任意键开始游戏,此处采用键盘值W、A、S、D控制棋子移动方向,空格键(SPACE)落子,ESC退出游戏。

三.系统开发平台

1) Visual C++ 单纯的Visual C++ 不行,需下载一个EasyX小插件对其进行配置好才可(网上有下的,也有配置方法)。 2) 程序代码必须以.cpp结尾。

3) 最佳分辨率:最佳效果1024*768。 四. 游戏开发详细过程:

五.游戏的完整详细代码:

#include

#include

//图形库 #include

#include #include //宏定义

#define ESC 27

//退出

#define SPACE 32

#define LEFT 65

//向左键 #define RIGHT 68 #define UP 87 #define DOWN 83

int key;

int chess[20][20];

//棋盘坐标位置

int flag=1;//标识要画的棋子的颜色flag=1,棋子为蓝色;其他为红色。 int chessx,chessy;

void start(); void draw_chessboard(); void draw_circle(int x,int y,int color); void play();

int result(int x,int y); //开始游戏 void start() {

outtextxy(200,240,"GAME START!");

outtextxy(200,380,"ESC-exit/press any key to continue "); } //画棋盘

void draw_chessboard() {

int i,j;

setbkcolor(GREEN);//设置背景颜色为绿色

cleardevice();//清屏

for(i=40;i<=440;i+=20)

for(j=40;j<=440;j++)

{

putpixel(i,j,4);

putpixel(j,i,4);

}

setcolor(8);

setlinestyle(1,0,1);

rectangle(32,32,448,448);

outtextxy(10,10,"ESC-exit/SPACE-put a piece"); } //画棋子

void draw_circle(int x,int y,int color) {

setcolor(color);

setlinestyle(1,0,10);

x=(x+2)*20;

y=(y+2)*20;

circle(x,y,4); } //清除棋子

void draw_pixel(int x,int y,int color) {

x=(x+2)*20;

y=(y+2)*20;

{

int a,b,c,d;

for(a=1;a<=8;a++)

putpixel(x+a,y,color);

for(b=8;b>=1;b--)

putpixel(x,y-b,color);

for(c=1;c<=8;c++)

putpixel(x,y+c,color);

for(d=8;d>=1;d--)

putpixel(x-d,y,color);

putpixel(x+9,y,color);

putpixel(x,y-9,color);

putpixel(x,y+9,color);

putpixel(x-9,y,color);

} } //游戏过程 void play() {

int i,j;

switch(key)

{

case LEFT://棋子左移

if(chessx-1<0)

break;

else

{

for(i=chessx-1,j=chessy;i>=1;i--)

if(chess[i][j]==0)

{

draw_circle(chessx,chessy,GREEN);

draw_pixel(chessx,chessy,8);

break;

}

if(i<1)

break;

chessx=i;

if(flag==1)

draw_circle(chessx,chessy,BLUE);

else

draw_circle(chessx,chessy,RED);

}

break;

case RIGHT://棋子右移

if((chessx+1)>19)

break;

else

{

for(i=chessx+1,j=chessy;i<=19;i++)

if(chess[i][j]==0)

{

draw_circle(chessx,chessy,GREEN);

draw_pixel(chessx,chessy,8);

break;

}

if(i>19)

break;

chessx=i;

if(flag==1)

draw_circle(chessx,chessy,BLUE);

else

draw_circle(chessx,chessy,RED);

}

break;

case DOWN://棋子下移

if((chessy+1)>19)

break;

else

{

for(i=chessx,j=chessy+1;j<=19;j++)

if(chess[i][j]==0)

{

draw_circle(chessx,chessy++,GREEN);

draw_pixel(chessx,chessy,8);

break;

}

if(j>19)

break;

chessx=i;

if(flag==1)

draw_circle(chessx,chessy,BLUE);

else

draw_circle(chessx,chessy,RED);

}

break;

case UP://棋子上移

if((chessy-1)<0)

break;

else

{

for(i=chessx,j=chessy-1;j>=1;j--)

if(chess[i][j]==0)

{

draw_circle(chessx,chessy,GREEN);

draw_pixel(chessx,chessy,8);

break;

}

if(j<1)

break;

chessy=j;

if(flag==1)

draw_circle(chessx,chessy,BLUE);

else

draw_circle(chessx,chessy,RED);

}

break;

case ESC://退出游戏

break;

case SPACE://落子

if(chessx>=1&&chessy<=19&&chessx<19&&chessy>=1)

{

if(chess[chessx][chessy]==0)

{

chess[chessx][chessy]=flag;

if(result(chessx,chessy)==1)

{

cleardevice();

if(flag==1)

{

cleardevice();

outtextxy(80,200,"CONGRATIONATIONS,BLUE WIN !");

getch();

closegraph();

exit(0);

}

if(flag==2)

{

cleardevice();

outtextxy(80,200,"CONGRATIONATIONS,RED WIN !");

getch();

closegraph();

exit(0);

}

}

if(flag==1)

flag=2;

else

flag=1;

break;

}

}

else

break;

} } //判断胜负

int result(int x,int y) {

int j,k,n1,n2;

while(1)

{

n1=0;

n2=0;

for(j=x,k=y;j>=1&&k>=1;j--,k--)

{

if(chess[j][k]==flag)

n1++;

else

break;

}

for(j=x,k=y;j<=19&&k<=19;j++,k++)

{

if(chess[j][k]==flag)

n2++;

else

break;

}

if(n1+n2-1>=5)

return(1);

n1=0;

n2=0;

for(j=x,k=y;j<=19&&k>=1;j++,k--)

{

if(chess[j][k]==flag)

n1++;

else

break;

}

for(j=x,k=y;j>=1&&k<=19;j--,k++)

{

if(chess[j][k]==flag)

n2++;

else

break;

}

if(n1+n2-1>=5)

return(1);

n1=0;

n2=0;

for(j=x,k=y;j>=1;j--)

{

if(chess[j][k]==flag)

n1++;

else

break;

}

for(j=x,k=y;j<=19;j++)

{

if(chess[j][k]==flag)

n2++;

else

break;

}

if(n1+n2-1>=5)

return(1);

n1=0;

n2=0;

for(j=x,k=y;k>=1;k--)

{

if(chess[j][k]==flag)

n1++;

else

break;

}

for(j=x,k=y;k<=19;k++)

{

if(chess[j][k]==flag)

n1++;

else

break;

}

if(n1+n2-1>=5)

return(1);

return (0);

} }

//主函数

int main(void) {

initgraph(620,480);

start();

key=getch();

if(key==ESC)

exit(0);

else

{

cleardevice();

flag=1;

draw_chessboard();

do

{

chessx=10;

chessy=10;

if(flag==1)

draw_circle(chessx,chessy,BLUE);

else

draw_circle(chessx,chessy,RED);

do

{

while(getch()==0);

key=getch();

play();

}

while(key!=ESC&&key!=SPACE);

}

while(key!=ESC);

closegraph();

}

return 0; }

作者:flybird 时间:2012/08/18

第四篇:基于C#的网络五子棋游戏设计

摘 要:文章是应用C#语言来完成网络五子棋的设计实现,其中完成了网络五子棋的界面设计、网络通信类的设计实现,以及游戏胜负的设计实现等主要功能模块。

关键词:C#;网络;五子棋

五子棋起源于中国古代的黑白棋种之一,经过多年的一系列变化,使得这一简单游戏变得复杂化、规范化,最终成为今天的职业连珠五子棋,同时也是一项国际比赛项目。五子棋不仅能增强思维能力,提高智力,并且富有哲理,有助于修身养性;既具有简单易学的特性,又有深奥的技巧和高水平的国际比赛。而随着网络的普及,网络游戏迅猛发展,一些小型的网络游戏受到用户的热衷,如五子棋、围棋、象棋等。文章主要应用C#语言完成网络五子棋游戏的设计实现。

1 网络五子棋游戏的功能需求

网络五子棋游戏需要具备如下基本功能:

1.1 该游戏能够在局域网上运行,游戏双方具有相同的界面。

1.2 “选择白棋”或“选择黑棋”,然后查找局域网中的在线玩家进行连接。

1.3 黑棋先行,黑白棋子交替进行,任何一方不可以连下两步棋。

1.4 程序能够判断哪方获胜,一旦某方获胜,程序结束,开始下一局。

2 界面设计

五子棋游戏规定,任何一方棋子落下后是不需要再动的,所以棋盘可以采取一张棋盘图片,其中方格的大小为20*20像素,黑子和白子也分别使用20*20的图片。在程序中应用ImageList控件的Draw方法来实现对黑子和白子的管理,即在指定位置显示指定的图像。该方法在本程序中的使用格式如下:

public void Draw(Graphics g, int x, int y, int width,int height, int index) { }

3 监听类和发送类设计

监听类主要监听对方发过来的消息,然后交给信息处理方法DoInformation,该方法会根据不同的消息内容作出相应处理。发送类主要完成数据发送,如客户IP信息,连接信息,下棋信息,退出信息等信息的发送。其中监听类的主要功能代码如下:

private void Listener() //监听方法

{ try { tcpLisn=new TcpListener(5858); tcpLisn.Start();

while(listenerRun)

{ Socket sk=tcpLisn.AcceptSocket(); tring remote=sk.RemoteEndPoint.ToString();

Byte[] stream=new Byte[80]; int i=sk.Receive(stream);

string msg=System.Text.Encoding.UTF8.GetString(stream);

AddChessEventArgs arg=new AddChessEventArgs();

arg.site=msg; OnAddChess(this,arg) }......

发送类的主要功能代码如下:

public void Send(string stream) { try { TcpClient tcpclt = new TcpClient(obj,5858);

NetworkStream netStream = tcpclt.GetStream();

StreamWriter streamwrite = new StreamWriter(netStream);

streamwrite.Write(stream); streamwrite.Flush();

streamwrite.Close(); tcpclt.Close(); }......

4 消息出来方法设计

设计一个信息处理方法DoInformation,用来处理Listener对象收到对方发送过来的消息,该方法会根据字符串中包含的CONN(连接)、SITE(对方下棋)或QUIT(对方退出),来进行相应不同的处理。主要功能代码如下所示:

public void InformationDo(object sender, AddChessEventArgs e)

{ ...... switch (sp)

{ case "SITE": x = Convert.ToInt32(sp[1]) / 100;

y = Convert.ToInt32(sp[1]) % 100; Point p = new Point(x,y);

if (Convert.ToInt32(sp[2]) == 0)

{ str = "white"; type = WHITE; rdoWhite.Enabled = false; }

else { str = "black"; type = BLACK; rdoBlack.Enabled = false;}

AddChess(p,type); DrawNextPlayerMark(); ......

5 游戏的胜负设计实现

根据五子棋的游戏规则,5个同色棋子先连成一条线的一方获胜,其中连线方式有四种:横、竖、左对角线、右对角线。所以在程序设计时,需要以刚下的棋子为中心,分别检查其所在行、列、左对角线、右对角线四个方向有没有连成5个同色的棋子。

nt x, y,n, LastPlayer=(nextPlayer==WHITE)?BLACK:WHITE;

n=1; //查看该行有没有5个同色棋子 y = LastPoint.Y;

for (x = LastPoint.X - 1; x >= 0; x--)

{ if (GameBoard[y, x] == LastPlayer) n++; else break; }

for (x = LastPoint.X + 1; x < 15; x++)

{ if (GameBoard[y, x] == LastPlayer) n++; else break; }

if (n >= 5) { WhoWin(LastPlayer); return; }

6 结束语

网络五子棋游戏是被广大用户熟识的益智小游戏,文章主要应用C#语言来实现了该游戏的界面设计、网络通信等主要功能框架。

参考文献

[1]吕尚榕,基于flash的五子棋软件的设计与实现[D].复旦大学, 2012.

[2]陈青华.C#网络开发项目教程[M].电子工业出版社,2012.

第五篇:数学日记下五子棋

数学日记的内容是丰富多彩的,形式是不拘一格的,同学们可以写自己感兴趣的话题,小学频道为大家提供了数学日记范文,希望对大家有所帮助。数学日记范文:下五子棋

今天我和妈妈一起下五子棋。一开始我总是输给妈妈,后来才慢慢找到秘诀,秘诀就是:首先要看出对手下的棋子有什么目的,然后把自己的棋子连起来的同时,也要尽量把对手的棋子断掉。我找到了这个秘诀后好几局都赢了妈妈。我高兴得手舞足蹈,想:哈哈,输了吧!妈妈只能把爸爸请来,我心想:爸爸还不是跟妈妈一样会输掉?我还是使出同样的秘诀,可是爸爸赢了一局,我毫不示弱,又和爸爸下了几局,最后我终于赢了。

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

上一篇:汽修厂抱怨受理制度下一篇:群文阅读教学的策略