欢迎来到我的范文网!

儿童动物军棋棋谱

幼儿园教案 时间:2020-03-12

【www.myl5520.com--幼儿园教案】

幼儿园各区域填充
篇一:儿童动物军棋棋谱

小班语言区

小班建构区

小班表演区

中班表演区

中班语言区

中班角色区

中班美工区

CASIO_ClassPad_330版军棋编程---宁波效实中学 徐珑迪
篇二:儿童动物军棋棋谱

CASIO ClassPad 330版军棋编程

宁波效实中学 徐珑迪 指导教师 梁毅 ClassPad 330上的编程(Program)较其它编程语言有着一些独到的特点。举个例子吧,虽然与Visual Basic相比,它缺少了数组变量这一重要的工具,但它的GetPen功能却做到了VB所做不到的一些效果,使编写触屏游戏成为了可能。而在我的手中,这个可能化为了现实,我开发的军棋游戏就是其中的代表作。

我的军棋程序从初步完成到最终定稿经历了一个多月,期间大大小小的修改不计其数。纵观其进程,彻底的修改共有三次,其不同表现在对变量的设臵上。

第一次,我以格子为变量。将每个格子上棋子的大小直接保存为一个两位数,内外码一致。这个程序由布局与运行两个主程序组成,这一点已经和最后的程序一样了。但它的子程序多达7个,其控制60个格子就需要60个变量,整个程序非常之大。就布局程序而言,双方必须事先在纸上画好棋谱,然后依次以代码形式输入,既慢又繁琐。在运行程序中,由于那时对GetPen的用法不熟悉,只能用手动输入坐标的方法来选择进攻棋子与被进攻棋子,很麻烦且容易出错。尽管如此,我和同学还是用了约一个半小时下完了第一盘棋。但由于内外码一致的限制,还只能走明棋。

第二次,我以棋子为变量。将每个棋子保存成一个六位数:第一位表示哪一方,第二、三位表示大小,第四位是横坐标,第五、六位是纵坐标,这样我仅需50个变量就能表示所有棋子了。这种将一个棋子的所有属性都放在一个变量中的方法相对地缩减了程序的长度,但由于“等效数组变量”的不成熟,程序还是很大,而且总变量数竟接近了200个,子程序反倒有8个。不过这个修订版本的优点也有很多。它的内外码是分开的,外码用容易辨认的拉丁字母代表棋子。对于棋盘,我精心设计了与真实棋盘高度相似的铁道线、兵站、行营、大本营等,格式越来越正式化。再者,由于GetPen的熟练掌握,我终于实现了直接触棋子就可以完成走动或攻击的梦想。这个技术突破广泛应用在布局与运行两程序中,使得游戏非常容易操作。

而且内外码不一致后,外码可以有两套,一套是看己方棋子是用的外码,另一套则只有黑白两种颜色,也就是真正意义上的暗棋。

第三次,我以整个棋盘为变量。由于ClassPad 330对变量的有效数字没有限制,所以我干脆就用一个120位数来表示整个棋盘,其中按顺序排列着60个两位数,两位数本身表示大小,这个两位数的序数则表示这个棋子的位臵。这样一来,总共变量数仅有10个,程序大小仅为原来的1/4,而且运行速度也更快了。这种思想使比较大小的程序段得到大大地简化,本程序的子程序数竟减到了0。其它方面我仍然继承了上次的优点,使整个程序得到了极好的完善。

以下就是军棋程序及其解释。

LAYOUT

ClrText

儿童动物军棋棋谱。

For 1→i To 12 Step 1 Locate 1,15i-14,“[“ Locate 137,15i-14,”]” Next

For 1→i To 11 Step 1 Locate 68,15i-6,”|” Next

Locate 68,84,”‖” For 1→i To 2 Step 1 Locate 47,75i-29,”]-(“ Locate 77,75i-29,”)-[“ For 1→j To 9 Step 1

Locate 120i-112,15j+9,”‖” Next

For 1→j To 11 Step 1 Locate 60i-22.15j-6,”|” Next

Locate 60i-22,84,”☑” For 1→j To 2 Step 1 For 1→k To 2 Step 1

Locate 60i-43,75j+60k-119,”]=[“ Locate 60i-13,75j+60k-119,”]=[“ Locate 60i-37,75j+30k-81,”↘” Locate 60i-7,75j+30k-81,”↙” Locate 60i-43,75j+30k-74,”]-(“ Locate 60i-13,75j+30k-74,”)-[“ Locate 60i-37,75j+30k-66,”↗” Locate 60i-7,75j+30k-66,”↖” Next

Locate 60i-43,165j-164,”]-{“ Locate 60i-13,165j-164,”}-[“

Locate 120i-112,150j-141,”|” Locate 90i-73,75j-29,”]-[“ Locate 120i-112,165j-164,”Y” Locate 120i-112,135j-119,”D” Locate 120i-112,105j-74,”E” Locate 120i-112,75j-29,”F” Locate 120i-112,45j+16,”X” Locate 120i-112,15j+61,”C” Locate 60i-22,135j-119,”B” Locate 60i-22,75j-29,”A” Locate 60i-22,15j+61,”G” Next

Locate 68,135i-119,”H” Locate 68,105i-74,”A” Locate 68,45i+16,”I” Locate 68,15i+61,”C” Next

Locate 38,1,”Z” Locate 68,1,”Y” Locate 98,1,”B” Locate 38,166,”B” Locate 68,166,”Y” Locate 98,166,”Z”

„该For-To循环:根据预先的计算显示棋盘框架并以代码形式显示默认布局。

242524152417152115171800140018191400141923002200231620162016030703070310000900100601000106050001000504020802041102111211→Q

„设臵初始棋盘变量,用一个120位数刻画60个格子。

0→t

„t在本程序段中是一个二进制变量,0控制循环的继续,1控制布局的结束。

For 0→i To 1 Step 1 If i=0 Then

Message “Team ■ lays out.” Else

Message “Team □ lays out.” IfEnd

„该If语句:提示哪一方布局。

Do Pause Wait 0.5 Do

GetPen x,y

LpWhile x=0 and y=0

„该Do-While循环:若没有点到继续循环,直至点到为止,使触屏命中率提高。

71-Int(x/30+1)-5Int((y-1)/15)→s

„将触屏得到的坐标转化为棋盘变量中控制相应那个格子的两位数的序数。

Int(mod(Q,100^s)/100^(s-1))→S

„按照这个序数从棋盘变量中找出这个格子对应的两位数,表示棋子的大小。

If Int(S/13)≠i Then 1→t

„若发现点到了对方的棋上,到该轮Do-While循环结束后即结束该方布局。

Else

30Int(x/30)+8→X 15Int((y-1)/15)-29→Y

„将触屏得到的坐标转化为实际坐标,即使落在某一个有效范围内的点都能够触发该处变量。

Wait 0.5 Do

GetPen x,y

LpWhile x=0 and y=0

71-Int(x/30+1)-5Int((y-1)/15)→o Int(mod(Q,100^s)/100^(o-1))→O

Q+100^(o-1)×(S-Q)+100^(s-1)×(O-S)→Q

„由于两个棋子发生了互换,所以在控制那两个格子的数位上分别减去原来的值并加上新的值。

For 1→j To 2 Step 1 If j=2 Then S→O

30Int(x/30)+8→X 15Int((y-1)/15)-29→Y IfEnd

„该If语句:在第一轮循环中使用O的值,第二轮循环中使用S的值。

If mod(O,13)=1 Then

Locate X,Y,”A”

ElseIf mod(O,13)=2 Then

Locate X,Y,”B”

ElseIf mod(O,13)=3 Then

Locate X,Y,”C”

ElseIf mod(O,13)=4 Then

Locate X,Y,”D”

ElseIf mod(O,13)=5 Then

Locate X,Y,”E”

ElseIf mod(O,13)=6 Then

Locate X,Y,”F”

Then

Locate X,Y,”G”

ElseIf mod(O,13)=8 Then

Locate X,Y,”H”

ElseIf mod(O,13)=9 Then

Locate X,Y,”I”

ElseIf mod(O,13)=10 Then

Locate X,Y,”X”

ElseIf mod(O,13)=11 Then

Locate X,Y,”Y”

ElseIf mod(O,13)=12 Then

Locate X,Y,”Z” Else

Message “Mistaken!” IfEnd

„该If语句:将表示棋子大小的变量转化为显示的代码。

Next

„该For-To循环:分别在对应的格子上显示了交换后棋子的代码。

IfEnd

LpWhile t=0

For 8→j To 128 Step 30

For 91-90i→k To 166-90i Step 15 If i=0 Then

Locate j,k,”■” Else

Locate j,k,”□” IfEnd Next Next

„该For-To循环:将一侧的格子全都用该方的颜色遮起来。

For 1→j To 2 Step 1

Locate 60j-22,106-75i,” “ Locate 60j-22,136-75i,” “ Next

Locate 68,121-75i,” “ Next

„该For-To循环:在行营的格子上挖空。儿童动物军棋棋谱。

GAMEWAR

1→t

„t在本程序段中可取1和-1两个值,1表示黑方,-1表示白方。

Pause If t=1 Then

Input W,”Team ■:If you want to see chesses,input 1.” Else

Input W,”Team □:If you want to see chesses,input 1.” IfEnd

„以上If语句:提示该方是否忘记自己的棋子,要看一下。如果要看,输入1复制给控制开启看棋子程序段的变量W。

If W=1 Then

For 1→i To 60 Step 1

Int(mod(Q,100^i)/100^(i-1))→O

„取一个棋子的大小变量。

128-30mod(i-1,5)→X 166-15Int((i-1)/5)→Y

„得出该格子的实际坐标。

If O≠0 and Int(O/13)=0.5-0.5t Then

If mod(O,13)=1 Then

Locate X,Y,”A”

ElseIf mod(O,13)=2 Then

Locate X,Y,”B”

ElseIf mod(O,13)=3 Then

Locate X,Y,”C”

ElseIf mod(O,13)=4 Then

Locate X,Y,”D”

ElseIf mod(O,13)=5 Then

Locate X,Y,”E”

ElseIf mod(O,13)=6 Then

Locate X,Y,”F”

ElseIf mod(O,13)=7 Then

Locate X,Y,”G”

ElseIf mod(O,13)=8 Then

Locate X,Y,”H”

ElseIf mod(O,13)=9 Then

Locate X,Y,”I”

Then

Locate X,Y,”X”

ElseIf mod(O,13)=11 Then

Locate X,Y,”Y”

ElseIf mod(O,13)=12 Then

Locate X,Y,”Z” IfEnd IfEnd

„该If语句:若在60个格子中找到了该方的棋子,则将该棋子的代码在对应位臵上显示出来。

Next

„该For-To循环:实现了60个格子中对该方棋子不重复不遗漏的查找并显示出来。

Message “If you‟ve finished,click rightfoot.”

„提示若看完了棋子,点击右下角的“继续”。

Pause

For 1→i To 60 Step 1

Int(mod(Q,100^i)/100^(i-1))→O 128-30mod(i-1,5)→X 166-15Int((i-1)/5)→Y If O≠0 and Int(O/13)=0 Then

Locate X,Y,”■” ElseIf Int(O/13)=1 Then

Locate X,Y,”□” IfEnd

„该If语句:若在60个格子中找到了该方的棋子,则将该棋子所在的格子用该方的颜色遮起来。

Next

„该For-To循环:原理同上,将显示的棋子再遮起来。

IfEnd Pause Wait 0.5 Do

GetPen x,y

LpWhile x=0 and y=0

71-Int(x/30+1)-5Int((y-1)/15)→s Int(mod(Q,100^s)/100^(s-1))→S Q-100^(s-1)×S→Q

„由于只要拿起的一个棋子,那个格子上一定为空,所以在控制该格子的数位上减去原数值。

Locate 30Int(x/30)+8,15Int((y-1)/15)-29,” “

„在该格子上显示空白。

Wait 0.5

Do

LpWhile x=0 and y=0

71-Int(x/30+1)-5Int((y-1)/15)→o Int(mod(Q,100^s)/100^(s-1))→O 30Int(x/30)+8→X 15Int((y-1)/15)-29→Y

If mod(O,13)=12 and mod(S,13)≠10 Then If t=1 Then

Message “Team ■ wins!” Else

Message “Team □ wins!” IfEnd

„该If条件:若是非炸弹进攻军旗,则显示进攻方胜利。否则进入下一级判断。

ElseIf (mod(O,13)=10 or mod(S,13)=10) and O≠0 Then

Q-100^(o-1)×O→Q Locate X,Y,” “

„该If条件:若至少其中一方为炸弹,且该步不是炸弹的走动,则双方都牺牲了。在控制被进攻的格子的数位上减去原数值,并在该格子上显示空白。否则进入下一级判断。

ElseIf mod(O,13)=11 and mod(S,13)=1 Then

Q+100^(o-1)×(S-O)→Q If t=1 Then

Locate X,Y,”■” Else

Locate X,Y,”□” IfEnd

„该If条件:若是工兵进攻地雷,则地雷被挖掉。在控制被进攻的各自的数位上减去原数值,加上进攻棋对应的数值,并在该格子上显示进攻方的颜色。否则进入下一级判断。

ElseIf mod(S,13)>mod(O,13) Then

Q+100^(o-1)×(S-O)→Q If t=1 Then

Locate X,Y,”■” Else

Locate X,Y,”□” IfEnd

„该If条件:若进攻方大于被进攻方,则被进攻方被吃掉。在控制被进攻的各自的数位上减去原数值,加上进攻棋对应的数值,并在该格子上显示进攻方

的颜色。否则进入下一级判断。

ElseIf mod(S,13)=mod(O,13) Then

Q-100^(o-1)×O→Q Locate X,Y,” “

„该If条件:若进攻方等于被进攻方,则双方都牺牲了。在控制被进攻的格子的数位上减去原数值,并在该格子上显示空白。

IfEnd

„该If语句:还隐含了一个条件,即当进攻方小于被

进攻方时,进攻方撞死,其他不发生变化,因此省略。这些条件的判断共同组成了严密的“大小”判断体系。

-t→t

„该方回合结束,对方回合。

LpWhile x>0

„仅当触屏在屏幕之外时结束程序。

伴随着三次大修改的,是技术上的突破,其中最主要的是创造了棋盘变量。我如果用一个m×n位数来表示n个有序棋子即整个棋盘,那么当我修改其中第i个棋子的值时,只需在10^((i-1)×m/n)这一数位上进行数值的导入或导出,这个效果就相当于数组变量。有了棋盘变量这个有力武器,实际上我已经找到了编写棋类游戏的通用模型。应用它我毫不费力地完成了五子棋编程。

WuZiQi

ClrText

For 1→i To 15 Step 1 For 1→j To 15 Step 1 Locate 9i-8,9j-8,”+” Next Next

„该For-To循环:画棋盘。

Locate 1,154,”Backwards(Don‟t DblClick)”

„悔棋功能。

Pause 1→t

„变量t表示哪一方。

0→Q

„Q为棋盘变量,相当于一个225位二进制数。

Do

Wait 0.5 Do

GetPen x,y

LpWhile x=0 and y=0 Int((x-7)/9)+1→X Int((y-37)/9)+1→Y

If 1≤X≤5 and Y=18 Then

Locate 9a-8,9b-8,”+” Q-2^(15(b-1)+(a-1))→Q -t→t

„该If条件:当点到“悔棋”时使Q回到上一步状态,该格点没有棋子,下棋方在大循环中不交换。

ElseIf 1≤X≤15 and 1≤Y≤15 and Int(mod(Q,2^(15(Y-1)+X))/2^(15(Y-1)+(X-1)))=0 Then

Q+2^(15(Y-1)+(X-1))→Q If t=1 Then

Locate 9X-8,9Y-8,”●”

Locate 1,163,”Now ● Next ○” Else

Locate 9X-8,9Y-8,”○”

Locate 1,163,”Now ○ Next ●” IfEnd

„该If语句:在相应点显示该方的颜色。

X→a Y→b

„记录该次的坐标为悔棋备用。

-t→t

„交换下棋权。

IfEnd

„该If语句:对于点到的格点触发棋盘变量中对应的数值导入。

LpWhile x>0

这就是棋类的编程,同理还可以编出更多的棋类游戏,如飞行棋、象棋、围棋等,不再赘述。

以前我玩过各种各样的小游戏,如今我自己不断摸索,在反复的失败中又爬起,用自己的汗水和灵感还有一台ClassPad 330编出了属于我自己的游戏。尽管这游戏并没有Flash的效果,尽管没有那么多人会玩我的游戏,但是那一刻的成就感,是对我的付出最好的回报。我可以骄傲地说:“我编出了军棋!”

白蒲中学将军令军棋社工作计划
篇三:儿童动物军棋棋谱

(2011年9月至2012年7月) 顾明波儿童动物军棋棋谱。

为了营造活泼、开放、和谐的校园文化氛围,促进学生个性发展,培养学生力争上游、永不服输的意志品质,弘扬中华传统文化,为建设社会主义文化强国作贡献,特制定将军令军棋社2011年9月至2012年7月工作计划如下:

一、主要活动内容

1、 做好棋社新旧交替工作,收纳新成员,选举产生棋社社长一名,

副社长二名,小组长四名。

2、

3、

4、 修订活动章程,制定活动规则。 进行基本军棋技法指导。 挂盘讲棋,对弈练习,精读棋谱,经验交流,观摩高手比赛视

频。

5、 评选优秀社员,举办小型比赛。

二、具体活动步骤与时间安排

每学期安排8次活动,全年共16次活动,累计活动时间20小时左右

累次活动时间均安排在周六下午4:00至5:30.

1、军棋基本规则介绍,推选社长、副社长

2、识谱、记谱,制定活动章程

3、残局技法演练

4、观摩比赛

5、对弈练习

6、组织比赛,与外校棋手比赛交流

7、邀请军棋专业选手讲学,现场指导

8、评选优秀社员,校内回报表演

2011年9月

(2011年9月至2012年7月) 顾明波

白蒲中学将军令军棋社成立于2010年9月,截至2012年7月,先后参与棋社活动的成员共有近16名。2011年9月至2012年7月,棋社成员16名,指导老师除本人外,其他老师还抽出宝贵时间,担任了棋社的客座教练。在他们的指导和帮助下,一年来,棋社队伍稳定,活动正常开展,社员参与热情很高,棋艺棋德齐头并进,在活动中展示了个性风采,愉悦了心情,陶冶了情操,收获良多。兹对棋社工作作几点小结。

(一) 活动内容丰富多彩,合理紧凑,使学生真正学到了棋艺,对军棋的精髓有了更深的理解和体悟,从对军棋的喜爱转化为对中国传统文化的敬畏、迷恋。儿童动物军棋棋谱。

(二)通过学习、交流,促进了社员们之间的了解,加强了师生间的沟通,营造了合作、竞争的良性氛围。本人在指导过程中,虽然备尝艰辛,但也接触了更多学生,自己的棋艺也小有长进。

(三)棋社活动的正常开展离不开校长室和政教处的指导和支持,更离不开学校有力的技术、设备和财政扶持。

(四)棋社活动时间应有更大的弹性。

(五)棋社的未来发展仍有很大潜力。

2012年9月

白蒲中学将军令军棋社工作计划
篇四:儿童动物军棋棋谱

军棋社团工作计划

为了营造活泼、开放、和谐的校园文化氛围,促进学生个性发展,培养学生力争上游、永不服输的意志品质,弘扬中华传统文化,为建设社会主义文化强国作贡献,特制定军棋社团工作计划如下:

一、主要活动内容

1做好棋社新旧交替工作,收纳新成员,选举产生棋社团长一名,副社团长二名,小组长四名。

2修订活动章程,制定活动规则。

3进行基本军棋技法指导。

4挂盘讲棋,对弈练习,精读棋谱,经验交流,观摩高手比赛视频。

5评选优秀社员,举办小型比赛。

二、具体活动步骤与时间安排

每周安排1次活动,每学期安排12次活动,全年共24次活动,

活动时间均安排在周五下午。

1、军棋基本规则介绍,推选社团长、副社团长。

2、识谱、记谱,制定活动章程。

3、残局技法演练。

4、观摩比赛。

5、对弈练习。

6、组织比赛,与外校棋手比赛交流。

7、邀请军棋专业选手讲学,现场指导。

8、评选优秀社员,校内回报表演。

白蒲中学将军令军棋社工作总结

(2011年9月至2012年7月) 顾明波

白蒲中学将军令军棋社成立于2010年9月,截至2012年7月,先后参与棋社活动的成员共有近16名。2011年9月至2012年7月,棋社成员16名,指导老师除本人外,其他老师还抽出宝贵时间,担任了棋社的客座教练。在他们的指导和帮助下,一年来,棋社队伍稳定,活动正常开展,社员参与热情很高,棋艺棋德齐头并进,在活动中展示了个性风采,愉悦了心情,陶冶了情操,收获良多。兹对棋社工作作几点小结。

(一) 活动内容丰富多彩,合理紧凑,使学生真正学到了棋艺,对军棋的精髓有了更深的理解和体悟,从对军棋的喜爱转化为对中国传统文化的敬畏、迷恋。

(二)通过学习、交流,促进了社员们之间的了解,加强了师生间的沟通,营造了合作、竞争的良性氛围。本人在指导过程中,虽然备尝艰辛,但也接触了更多学生,自己的棋艺也小有长进。

(三)棋社活动的正常开展离不开校长室和政教处的指导和支持,更离不开学校有力的技术、设备和财政扶持。

(四)棋社活动时间应有更大的弹性。

(五)棋社的未来发展仍有很大潜力。

2012年9月

本文来源:http://www.myl5520.com/jiaoanxiazai/102201.html

推荐内容