猫捉老鼠小游戏
中班体育游戏活动教案《猫捉老鼠》3篇

中班体育游戏活动教案《猫捉老鼠》中班体育游戏活动教案《猫捉老鼠》精选3篇(一)活动名称:猫捉老鼠活动目标:1. 培养孩子们的协作精神和团队意识。
2. 提高孩子们的运动能力和反应能力。
适用年龄:3-5岁活动准备:1. 游戏区域:选择一个宽敞的操场或室内场地,确保没有尖锐物品和障碍物。
2. 标识区域:用绳子或者彩带将游戏区域划分为两个部分,一个是“猫”的区域,一个是“老鼠”的区域。
3. 标志物品:准备一块小布条或者小毛球作为“老鼠”的标志物。
活动步骤:1. 说明规则:首先告诉孩子们游戏规则,将其中一名孩子扮成“猫”,其他孩子扮成“老鼠”。
将标志物物品放在“老鼠”的区域的中心。
2. 开始游戏:让“猫”站在自己的区域中间,其他的“老鼠”站在自己的区域中间。
3. 开始追逐:你可以说:“猫要追赶老鼠了,快跑!”然后“猫”追赶“老鼠”。
4. 规定规则:告诉孩子们,在游戏中,“猫”只能呆在自己的区域内,而“老鼠”可以自由地在两个区域间跑动,但不能停留在“猫”的区域内。
同时,“老鼠”可以尝试抢走标志物品,并将其带回“老鼠”的区域。
5. 游戏结束:当“猫”成功抓到一只“老鼠”,被抓到的“老鼠”将成为新的“猫”,游戏继续。
6. 改变游戏难度:你可以增加新的规则,如限定“老鼠”在一定时间内要把标志物品放回原处,或者增加更多的“猫”和“老鼠”。
注意事项:1. 活动期间需要保持安全,确保参与者的安全。
2. 孩子们在游戏中可能兴奋,指导者需要适时引导、管理和控制节奏。
3. 在游戏过程中鼓励孩子们相互配合,培养团队合作精神。
4. 确保游戏规则的理解清晰,让每个孩子都能参与到游戏中。
中班体育游戏活动教案《猫捉老鼠》精选3篇(二)教案名称:走小桥教学目标:1.培养儿童的平衡感和协调能力。
2.激发儿童的集体合作和团队精神。
3.增强儿童的体育意识和兴趣。
教学内容:中班体育游戏活动《走小桥》。
教学时间:每次活动约10-15分钟。
教学准备:1.教师准备一些小木板或者平衡棒。
幼儿园小班教案《猫抓老鼠》含反思

幼儿园小班教案《猫抓老鼠》含反思一、教案背景1.1 教学内容本次教案将以幼儿园小班为对象,设计一堂有趣的游戏活动课——《猫抓老鼠》。
1.2 教学目标•帮助幼儿了解游戏规则,并培养其团队协作能力;•促进幼儿身体协调性发展;•激发幼儿参与游戏的兴趣,增强集体荣誉感。
1.3 适用对象幼儿园小班学生,年龄在3-4岁之间。
二、教学过程2.1 游戏准备•分组:将学生分为多个小组,每个小组包含若干名学生。
•角色分配:每组设置一名“猫”和数名“老鼠”。
2.2 游戏规则•游戏开始后,“老鼠”们需要躲避“猫”的追捕,同时可以通过特定方式回击“猫”。
•游戏结束后,可以根据被“猫”抓到的“老鼠”数量来评选胜负。
2.3 游戏进行•指导学生熟悉游戏规则,并保证游戏的安全性。
•辅导学生运用团队协作和策略,争取胜利。
2.4 游戏总结•在游戏结束后,围绕游戏过程展开讨论,引导学生总结体会。
•鼓励学生分享游戏中的快乐和困惑,引导他们进行自我反思。
三、反思与评价3.1 教学反思在本次游戏活动中,学生积极参与,我在游戏中起到了引领和帮助的作用。
但是,也发现部分学生在游戏过程中表现较为被动,需要更多关注和引导。
3.2 教学改进下一次进行类似游戏活动时,可采取更多互动、鼓励参与的方式,以激发每位学生的参与热情。
同时,也需要更多关注学生的情感体验,引导他们在游戏中进行自我认知和情感表达。
3.3 教学成果通过本次《猫抓老鼠》游戏,学生们增强了团队协作意识,同时也锻炼了身体协调能力。
在学生的积极参与中,帮助他们建立了积极的游戏态度和团队意识。
四、结语通过这次《猫抓老鼠》游戏活动,我们看到了学生们的成长和快乐。
在未来的教学实践中,我们将更加重视情感体验和个性发展,努力打造更加有趣和富有意义的教学活动。
通过持续的反思和改进,致力于为学生提供更好的教育体验。
以上就是幼儿园小班教案《猫抓老鼠》含反思的全部内容,希望对您有所帮助。
《猫捉老鼠》含反思小班教案

《猫捉老鼠》含反思小班教案《猫捉老鼠》含反思小班教案(精选11篇)《猫捉老鼠》含反思小班教案篇1学习目标:享受集体游戏的乐趣。
通过变向躲闪跑、跑与钻等动作配合活动,发展动作的灵活性和协调性。
活动准备:猫头饰或脸谱。
轻快的音乐、手铃。
活动过程:学习领域:形式:小组1、请6位幼儿轮流戴上猫头饰或脸谱,扮演猫勇士,说说自己有什么本领可以捉到老鼠。
2、与幼儿玩“猫捉老鼠”游戏:6位幼儿两人一组,在地上对坐,手拉手举起来做出三个“洞”。
音乐响起,另外6位幼儿扮演小老鼠自由走动,当教师摇动手铃,一位戴上猫头饰的幼儿便出来捉老鼠,6只小老鼠便要立即跑回“洞”去。
3、请幼儿轮流扮演小老鼠和猫勇士玩游戏。
4、游戏活动之后,幼儿分享对活动的感受。
活动评价:能理解游戏规则,并乐于参与集体游戏。
活动建议:教师可以根据本班幼儿人数、活动场地或幼儿动作发展水平等条件不同,灵活掌握猫、鼠、“洞”的数量,调整活动的难度。
活动反思根据小班幼儿思维处于从直觉行动思维向具体形象思维过渡的时期以及情感外露、不稳定的特点,本次活动我主要运用了表演法、游戏法、情境法等教学方法。
引导幼儿扮演小老鼠,在玩耍、吃米、躲藏等不同情境中,反复感受音乐旋律和歌词,提高对音乐感受力和表现力,真正做到玩中学、学中乐。
《猫捉老鼠》含反思小班教案篇2活动目标:1.初步了解歌曲的内容,学习用不同的演唱速度、力度表现歌词中老鼠的不同动作及猫与老鼠角色的变化。
2.借助观察的经验及老师的动作提示,尝试根据歌词内容创编老鼠不同的动作造型,有节奏地做老鼠跑、老鼠吃米等动作。
3.在教师的提醒下,能遵守游戏规则,知道扮演老鼠时蹲下后不随便移动,等大猫唱完最后一句时才能跑回座位。
4.在学习歌表演的基础上,结合游戏情节,注意随着音乐的变化而变换动作。
5.通过整体欣赏音乐、图片和动作,帮助幼儿理解歌词内容。
活动重点:学习用不同的演唱速度、力度表现歌词中老鼠的不同动作及猫与老鼠角色的变化。
大班游戏教案《猫捉老鼠》

大班游戏教案:《猫捉老鼠》一、游戏介绍《猫捉老鼠》是一款非常适合大班幼儿园使用的游戏,它的规则简单易懂,能够培养幼儿的团队协作、观察力和反应能力。
游戏人数:12~24人游戏时间:15~20分钟游戏目标:让老鼠们在规定时间内躲避猫的追击,躲到指定区域获胜。
二、游戏准备1. 游戏道具•一块长条形的布或绳子•30个圆形卡纸,其中2枚卡纸标记为“猫”,其余为“老鼠”•一个记分板2. 游戏环境•需要一个室内场地进行游戏,空间大小不必过大。
•游戏开始前,在场地中央放置一条长条形的布或者绳子,分割游戏区域。
•将30张圆形卡纸放入一袋中,让每个参与游戏的幼儿自行从袋中取卡纸,随机分配角色:–2名幼儿取到的卡纸是“猫”,其余幼儿取到的卡纸为“老鼠”。
三、游戏规则1. 游戏目标•猫的目标是抓住所有老鼠。
•老鼠的目标是在规定时间内躲避猫的追击,躲到指定区域获胜。
2. 游戏流程•猫捉老鼠的游戏一开始,所有的老鼠都在布条或绳子分割的一侧,而猫的位置在布条或绳子的另一侧。
•倒计时开始之前,猫需要对老鼠们倒计时进行警告,例如:”3、2、1,我来了!“。
•猫在指定区域等待倒计时结束,然后开始追击老鼠。
•当猫触摸到一只老鼠时,老鼠出局。
如果所有老鼠都被捉住,猫获胜,游戏结束。
•当老鼠成功逃到指定区域时,该老鼠存活,得1分,重新返回布条或绳子的起点。
如果所有老鼠都逃到指定区域后,老鼠方获胜。
3. 时间限制•时间限制在15至20分钟之间。
4. 特殊情况处理•如果猫被老鼠同时 touch ,或者猫碰到边界,均不能算作老鼠被捉住。
四、教学目标与评价通过《猫捉老鼠》,幼儿能够培养以下能力:1.团队协作能力:幼儿需要和其他老鼠一起协作,躲避猫的追击,一起达成目标。
2.观察力:幼儿需要观察猫的位置,并及时走位躲避追击。
3.反应能力:幼儿需根据环境变化,及时做出反应,保护自己或者追捕老鼠。
4.游戏规则的理解:幼儿需要理解和遵守游戏规则,保持游戏运行的秩序。
猫咪抓老鼠小游戏

猫咪抓老鼠小游戏猫咪抓老鼠是一款简单而有趣的小游戏,适合所有年龄段的玩家。
游戏的目标是帮助猫咪抓住尽可能多的老鼠,获得最高的分数。
规则和玩法:1. 游戏开始时,玩家将看到一个方格的游戏界面,其中包含许多小方格,代表房间的格子。
猫咪位于其中一个格子上,老鼠则随机分布在其他格子上。
2. 玩家需要使用键盘或鼠标控制猫咪的移动,让猫咪抓住尽可能多的老鼠。
猫咪可以在水平和垂直方向上移动,但不能穿过墙壁或其他障碍物。
3. 玩家可以使用箭头键或点击游戏界面上的方向按钮来控制猫咪的移动方向。
猫咪每次移动一格,并且只能在相邻的格子之间移动。
4. 当猫咪移动到一个有老鼠的格子上时,它会抓住老鼠并得分。
每抓住一个老鼠,玩家的得分就会增加。
5. 游戏的时间是有限的,玩家需要在规定时间内抓住尽可能多的老鼠。
时间结束后,游戏结束,玩家的分数将被计算并显示在屏幕上。
6. 玩家可以尝试不同的策略和方法,例如追踪老鼠的运动路径,预测它们的行动,并尽可能快地移动猫咪来抓住它们。
7. 游戏中可能会有一些特殊道具或障碍物,例如奶酪可以增加额外的得分,而陷阱则会减少玩家的得分。
玩家需要小心避开陷阱,同时尽量收集奶酪来增加分数。
8. 玩家可以尝试挑战不同的关卡或难度,以增加游戏的挑战性和乐趣。
术语和技巧:1. 猫咪的移动速度可以影响玩家的抓老鼠效率。
玩家可以尝试控制猫咪的移动速度,以更好地追踪和抓住老鼠。
2. 观察老鼠的移动路径和行为模式,可以帮助玩家预测它们的下一步动作,并更好地规划猫咪的移动路径。
3. 尽量避免让猫咪与墙壁或障碍物碰撞,这样会浪费时间并减少抓老鼠的机会。
4. 收集奶酪来增加分数,但要小心陷阱,避免被它们减分。
通过以上的规则和玩法,玩家可以充分享受猫咪抓老鼠小游戏的乐趣。
挑战自己的反应速度和战略规划能力,尽量抓住更多的老鼠,获得最高的分数。
同时,游戏中的特殊道具和障碍物也增加了游戏的变化和挑战性,激发玩家的创造力和想象力,尝试不同的策略和方法,使游戏更加有趣和具有挑战性。
小班游戏教案《猫捉老鼠》

小班游戏教案《猫捉老鼠》游戏简介《猫捉老鼠》是一款旨在帮助小班儿童进行身体锻炼和促进社交能力的室内游戏。
该游戏需要最少2名玩家,其中一位玩家扮演“猫”,其余玩家扮演“老鼠”。
游戏过程中,“猫”需要追赶“老鼠”,“老鼠”则需要躲避“猫”的抓捕,并尽可能多的收集“奶酪”。
游戏目标通过游戏的过程,小班儿童可以锻炼身体活动能力、手眼协调能力以及游戏协作能力。
同时,该游戏还能够引导小班儿童在思考、行动和交往中提高自己的认知和社交能力。
游戏准备游戏所需物品如下: - 小型玩具老鼠(2-3只) - 一张软垫或垫子 - 一块布或纸板当做“奶酪” - 一只可爱的猫玩具(如果有的话)游戏规则1.选择一名玩家扮演猫,其余玩家扮演老鼠。
每位玩家的起始位置都在场地的一侧。
2.猫的任务是追赶老鼠,并在掌握机会时抓住它们。
老鼠的任务是躲避猫的抓捕,并尽量多地收集奶酪。
3.猫在游戏开始时从场地的一侧起跑。
老鼠们则从场地的另一侧起跑。
4.当猫抓住一只老鼠时,被抓到的老鼠需要停止活动。
这时,其他老鼠可以试图走近被抓老鼠的脚边,并从中间的“奶酪”堆中取走一个。
被抓的老鼠此时可以回到最开始的位置重启游戏。
5.游戏的时间由追逐和收集设置为30秒为一个轮回,每轮时间结束后,猫和老鼠的身份将重新安排,反复进行游戏。
游戏注意事项1.确保场地安全,没有任何危险物品或障碍物存在。
2.猫在进行抓捕时不要使用过大的力量,以免伤害手上的被抓老鼠。
3.游戏过程中保证所有孩子都有机会体验猫和老鼠的角色。
4.对于小班儿童,可以适当减少游戏时间,调整为15秒的轮回,以保证孩子们的游戏兴趣。
游戏收尾在游戏结束后,可以适当颁发一些奖章或小礼物,以奖励孩子们在游戏中的表现。
此外,还可以借助游戏过程中的经验,给孩子们分享一些如何进行社交沟通和协作的方法,以便帮助他们更好地融入到自己的生活中。
总结《猫捉老鼠》这款室内游戏可以帮助小班儿童在运动、思考、行动和交流中全面开展身心锻炼和认知发展。
大班优秀游戏教案《猫捉老鼠》

大班优秀游戏教案《猫捉老鼠》教案目标:1.培养幼儿的团队协作能力和反应速度。
2.提高幼儿对身体协调和空间感知的能力。
3.培养幼儿的观察力、思考力和创造力。
一、教学准备1.游戏场地:宽敞、安全、无障碍物。
2.道具:一只大猫头饰,若干只小老鼠头饰。
3.音乐:《猫捉老鼠》音乐。
二、教学过程1.游戏导入(1)教师带领幼儿做热身运动,活动全身关节,提高身体协调性。
(2)教师介绍游戏规则:一名幼儿扮演猫,其他幼儿扮演老鼠。
猫捉老鼠,老鼠要尽量躲避猫的追捕。
2.游戏进行(1)教师挑选一名幼儿扮演猫,为其戴上猫头饰。
其他幼儿扮演老鼠,戴上小老鼠头饰。
(2)教师播放《猫捉老鼠》音乐,猫开始追逐老鼠。
(3)老鼠要灵活躲避猫的追捕,尽量不被抓到。
(4)当猫抓到一只老鼠时,游戏结束,被抓到的老鼠成为下一轮的猫。
3.游戏拓展(1)增加难度:在游戏过程中,教师可以设置一些障碍物,如椅子、桌子等,让幼儿在躲避猫的过程中增加挑战性。
(2)变换角色:教师可以邀请其他幼儿扮演猫,让更多幼儿参与游戏。
(3)增加规则:教师可以规定老鼠在躲避猫的过程中,不能跑出指定的区域,否则视为被抓到。
(2)教师与幼儿讨论如何在游戏中更好地协作,提高游戏体验。
三、教学反思1.教师要关注幼儿在游戏过程中的表现,及时调整游戏难度,保证幼儿在游戏中的安全。
3.教师要关注幼儿在游戏中的情感体验,让幼儿在游戏中感受到快乐和成就感。
四、教学评价1.观察幼儿在游戏中的表现,评价其团队协作能力和反应速度。
2.观察幼儿在游戏中的创造力,评价其解决问题的能力。
3.与家长沟通,了解幼儿在家庭中的表现,评价其在游戏中学到的技能。
五、教学延伸1.家园共育:教师可以与家长分享本次游戏的教学目标,鼓励家长在家中与幼儿一起进行类似的游戏,巩固幼儿在园所学。
2.环境创设:教师可以在班级环境中布置与猫捉老鼠相关的场景,让幼儿在日常生活中感受到游戏的乐趣。
3.区域活动:教师可以组织幼儿进行相关的绘画、手工制作等活动,让幼儿在创作中发挥想象力,丰富游戏体验。
幼儿园小班游戏教案详案《猫捉老鼠》4篇

幼儿园小班游戏教案详案《猫捉老鼠》幼儿园小班游戏教案详案《猫捉老鼠》精选4篇(一)教案详案《猫捉老鼠》教学目标:1. 帮助幼儿认识猫和老鼠这两种动物。
2. 锻炼幼儿的跑动能力和反应能力。
3. 培养幼儿的团队合作精神。
教学准备:1. 红布条做猫尾巴。
2. 老鼠头饰。
3. 按摩棒或其他类似道具。
教学过程:1. 引导幼儿观察并讨论猫和老鼠的外貌特征,以及它们之间的关系。
教师可以分发图画或图片,引导幼儿观察,并提出问题,如“猫和老鼠都是什么颜色的?”、“猫喜欢吃什么?”等。
2. 观看相关视频或动画片,让幼儿更深入地了解猫和老鼠的生活习性。
3. 分发猫尾巴和老鼠头饰给幼儿,让他们自行选择角色,并给予角色扮演的指导,如“当你是猫的时候,可以扮演愤怒的猫,要迅速地去追老鼠。
”、“当你是老鼠的时候,要快速地逃离猫的追捕。
”4. 教师示范游戏规则:幼儿们形成一个圆圈,其中一个幼儿扮演猫,其他幼儿扮演老鼠。
猫尾巴将系在猫的腰后,并用手将尾巴摇晃在空中,表示猫的状态。
幼儿们在前进的过程中,猫的尾巴接触到老鼠的身体,则说明猫捉到了老鼠,这时猫和被抓到的老鼠都要换角色,继续游戏。
5. 游戏过程中,教师可以适时给予幼儿按摩棒等道具,增加游戏的趣味和挑战,让幼儿更加投入和积极参与。
6. 游戏结束后,教师组织幼儿进行小结,让幼儿分享自己在游戏中的感受和体会,如“当你是猫的时候,你觉得追捕老鼠容易吗?”、“当你是老鼠的时候,你觉得逃离猫的追捕有困难吗?”等。
教学提示:1. 在游戏中,要注意幼儿的安全,避免幼儿碰撞或摔倒。
2. 游戏规则可以根据幼儿的实际情况做适当调整和变化,使游戏更具挑战性和趣味性。
3. 在游戏中要鼓励幼儿积极参与,发扬团队合作精神,让幼儿们理解到只有大家齐心协力,才能完成任务。
扩展活动:1. 用纸板、彩纸等材料制作猫和老鼠的面具,让幼儿参与制作。
2. 制作简单的迷宫,让幼儿来设计,然后幼儿们在迷宫里扮演猫和老鼠,体验追逐和逃离的乐趣。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《猫捉老鼠小游戏》程序设计基础课程设计报告专业:计算机科学与技术班级:09级2班姓名:马建南学号: 2009082230 2009082233指导教师:郭攀2010年9月18日目录1 课程设计目的 (2)1.1课程设计目的 (2)1.2课程设计题目 (2)1.3题目要求 (2)2 总体设计 (2)(画出设计课题程序总体组成框图、流程图)3详细设计 (3)(各个模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)及模块程序流程图)4 课程设计的原程序代码 (4)(程序代码清单中应有足够的注释)5 运行结果............................................ .22(截图及说明)6 课程设计总结 (25)7 参考书目 (26)1 课程设计目的1.1课程设计目的设计一个猫和老鼠迷宫,显示猫和老鼠图像;设置游戏菜单、控制按钮、游戏时间、老鼠个数;进而实现游戏效果。
1.2课程设计题目猫捉老鼠小游戏1. 3 题目要求1)设计一个猫捉老鼠迷宫。
2)要求猫的速度大于老鼠的速度。
3)计算最短路径,每走一步,猫按最短路径抓获老鼠;最短路径可运用数据结构中的队列实现。
附加功能:1)迷宫随机生成。
2)增加老鼠个数。
2 总体设计框架图:3.详细设计1. OnDraw()函数显示迷宫及猫和老鼠。
2. OnTimer()函数判定结束标志,设置游戏时间。
3. OnKeyDown()函数实现猫的手动控制。
4. CDC *pDC 需要画位图的CDC指针UINT IDImage 位图资源IDCrect &rect 指定位图在pDC中的位置COLORREF rgbMask 位图的透明色atCatchRatView::CCatCatchRatView(){m_bmWall.LoadBitmap(IDB_Wall); //载入迷宫位图}6.void CCatCatchRatView::OnUpdateStop(CCmdUI* pCmdUI) {pCmdUI->Enable(StartFlag==1); //游戏过程中可以选停止菜单}通过不断改变猫鼠位图显示区域坐标,实现猫和老鼠的动态实现4.课程设计的源程序代码(主要代码)// CatCatchRatView.h : interface of the CCatCatchRatView class#if !defined(AFX_CATCATCHRATVIEW_H__B4196808_4145_49DF_ 99D0_45F38E4512CB__INCLUDED_)#defineAFX_CATCATCHRATVIEW_H__B4196808_4145_49DF_99D0_45F38 E4512CB__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000#include "SelectDlg.h"#define RATMAX 5 //宏定义,老鼠的最大个数class CCatCatchRatView : public CView{public:CBitmap m_bmCat[4],m_bmRat[4]; //猫和老鼠的位图CBitmap m_bmWall;int StartFlag; //程序运行状态,-1:初始,0:暂停,1:开始,2:结束bool m_bRatLive[RATMAX]; //老鼠存活标志int m_nWallw,m_nWallh;int m_nWallx,m_nWally;int m_nCatw,m_nCath; //猫位图的宽和高int m_nCatx,m_nCaty; //猫位图的左上角坐标//猫和老鼠的运动方向int m_nRatDirection[RATMAX],m_nCatDirection;int m_nRatw,m_nRath; //老鼠位图的宽和高//老鼠位图的左上角坐标int m_nRatx[RATMAX],m_nRaty[RATMAX];CRect m_rectClient; //场地矩形CRect m_rectWall; //墙矩形CRect m_rectRat[RATMAX],m_rectCat; //猫鼠位图的矩形int m_nRat; //待抓老鼠数int m_nRatSpeed,m_nCatSpeed; //运动速度CTime m_timeStart,m_timeEnd; //游戏开始和结束时间CTimeSpan m_timeWork,m_timeSet; //游戏剩余时间和设定时间int m_nDifficulty; //难度0:低,1:中,2:高int m_nWinFlag; //游戏获胜者,0:猫获胜,1:老鼠获胜protected: // create from serialization onlyCCatCatchRatView();DECLARE_DYNCREATE(CCatCatchRatView)public:CCatCatchRatDoc* GetDocument();public:protected:这是一个用来画透明位图的函数CDC *pDC 需要画位图的CDC指针UINT IDImage 位图资源IDCrect &rect 指定位图在pDC中的位置COLORREF rgbMask 位图的透明色*/void DrawTransparentBitmap(CDC *pDC,CBitmap &Image,CRect &rect, COLORREF rgbMask);// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CCatCatchRatView)public:virtual void OnDraw(CDC* pDC);virtual BOOL PreCreateWindow(CREATESTRUCT& cs);protected:virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);//}}// Implementationpublic:virtual ~CCatCatchRatView();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endifprotected:// Generated message map functionsprotected://{{AFX_MSG(CCatCatchRatView)afx_msg void OnTimer(UINT nIDEvent);afx_msg void OnRestart();afx_msg void OnStart();afx_msg void OnStop();afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);afx_msg void OnUpdateStop(CCmdUI* pCmdUI);afx_msg void OnSelect();afx_msg void OnUpdateStart(CCmdUI* pCmdUI);//}}AFX_MSGDECLARE_MESSAGE_MAP()};//view.Cpp#include "stdafx.h" //创建MFC.EXE后系统自动生成******** #include "CatCatchRat.h"#include "CatCatchRatDoc.h"#include "CatCatchRatView.h"//********************************// CCatCatchRatViewCCatCatchRatView::CCatCatchRatView(){//载入迷宫位图******************************************* m_bmWall.LoadBitmap(IDB_Wall);//载入猫和老鼠的位图资源m_bmCat[0].LoadBitmap(IDB_CatUp);m_bmCat[1].LoadBitmap(IDB_CatDown);m_bmCat[2].LoadBitmap(IDB_CatLeft);m_bmCat[3].LoadBitmap(IDB_CatRight);m_bmRat[0].LoadBitmap(IDB_RatUp);m_bmRat[1].LoadBitmap(IDB_RatDown);m_bmRat[2].LoadBitmap(IDB_RatLeft);m_bmRat[3].LoadBitmap(IDB_RatRight);//设置迷宫高和宽BITMAP bmWall;m_bmWall.GetBitmap(&bmWall);m_nWallw=bmWall.bmWidth;m_nWallh=bmWall.bmHeight;//计算猫和老鼠位图的高和宽BITMAP bmCat;m_bmCat[2].GetBitmap(&bmCat);m_nCatw=bmCat.bmWidth;m_nCath=bmCat.bmHeight;BITMAP bmRat[4];m_bmRat[0].GetBitmap(&bmRat[0]);m_bmRat[1].GetBitmap(&bmRat[1]);m_bmRat[2].GetBitmap(&bmRat[2]);m_bmRat[3].GetBitmap(&bmRat[3]);m_nRatw=bmRat[0].bmWidth;m_nRath=bmRat[0].bmHeight;//场地矩形和老鼠数目设置m_rectClient=CRect(20,20,1188,666);m_nRat=RATMAX;StartFlag=-1;//计算猫和老鼠位图的初时位置和运动方向m_nCatx=m_rectClient.left+m_rectClient.Width()/2;m_nCaty=m_rectClient.top+m_rectClient.Height()/2;m_rectCat=CRect(m_nCatx,m_nCaty,m_nCatx+m_nCatw,m_nCaty+ m_nCath);m_nCatDirection=2;srand((unsigned)time(NULL));for(int i=0;i<RATMAX;i++)//计算老鼠初始位置m_nRatx[i]=m_rectClient.left+rand()%(m_rectClient.Width() -m_nRatw);m_nRaty[i]=m_rectClient.top+rand()%(m_rectClient.Height()-m_nRath);m_rectRat[i]=CRect(m_nRatx[i],m_nRaty[i],m_nRatx[i]+m_nRat w,m_nRaty[i]+m_nRath);m_nRatDirection[i]=rand()%4;m_bRatLive[i]=TRUE;}//初始难度设为中m_nDifficulty=1;m_timeWork=m_timeSet=120;//游戏时间120秒m_nCatSpeed=5;m_nRatSpeed=3;m_nWinFlag=-1;//显示猫和老鼠及迷宫****************************void CCatCatchRatView::OnDraw(CDC* pDC){CCatCatchRatDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);pDC->Rectangle(CRect(19,19,1189,667));//显示游戏状态CString strTime;CString strRat;strTime.Format("剩余时间: %2d:%2d:%2d",m_timeWork.GetHours(),m_timeWork.GetMin utes(),m_timeWork.GetSeconds());strRat.Format("待抓老鼠:%3d",m_nRat);pDC->TextOut(200,0,strTime);pDC->TextOut(400,0,strRat);//*******************迷宫外围**********************//迷宫指针CDC memWallDC;CBitmap *MgDC;//*********位图指针*********memWallDC.CreateCompatibleDC(NULL);//计算迷宫初始位置m_rectWall=CRect(m_nWallx,m_nWally,m_nWallx+m_nWallw,m_n Wally+m_nWallh);//显示迷宫代码过长且重复,省略部分代码***m_nWallx=m_rectClient.left+0;m_nWally=m_rectClient.top+0;MgDC=memWallDC.SelectObject(&m_bmWall);pDC->BitBlt(m_nWallx,m_nWally,m_nWallw,m_nWallh,&memWall DC,0,0,SRCAND);memWallDC.SelectObject(MgDC);//显示猫和老鼠CDC memDC[RATMAX];CDC memCatDC;CBitmap *pOldDC;//猫位图指针*****************memCatDC.CreateCompatibleDC(NULL);pOldDC=memCatDC.SelectObject(&m_bmCat[m_nCatDirection]);pDC->BitBlt(m_nCatx,m_nCaty,m_nCatw,m_nCath,&memCatDC,0, 0,SRCAND);memCatDC.SelectObject(pOldDC);//r.left=m_nCatx;r.top=m_nCaty;r.right=r.left+m_nCatw;r.bottom=r.top+m_nCath;for(int i=0;i<RATMAX;i++){if(m_bRatLive[i]){memDC[i].CreateCompatibleDC(NULL);pOldDC=memDC[i].SelectObject(&m_bmRat[m_nRatDirection[i]; pDC->BitBlt(m_nRatx[i],m_nRaty[i],m_nRatw,m_nRath,&memDC[i ],0,0,SRCAND);memDC[i].SelectObject(pOldDC);}}//游戏结束标志if(StartFlag==2){pDC->TextOut(40,50,"Game Over!");if(m_nWinFlag==0){pDC->TextOut(40,100,"猫获胜!");}if(m_nWinFlag==1){pDC->TextOut(50,100,"老鼠获胜!");}m_nWinFlag=-1;}if(m_nRat>0){//有老鼠未被抓住srand((unsigned)time(NULL));for(int i=0;i<RATMAX;i++){if(m_bRatLive[i]){//对未被抓住的老鼠进行处理switch(nIDEvent)//参考贪吃蛇***********************{case 2://该变老鼠运动方向m_nRatDirection[i]=rand()%4;break;case 1: //改变老鼠位置InvalidateRect(m_rectRat[i]);int nRatMoveStep=m_nRatSpeed+rand()%5;//老鼠移动的距离if((abs(m_nRatx[i]-m_nCatx)<3*m_nRatw)&&(abs(m_nRaty[i]-m_nCaty)<3*m_nRath)){ //如果老鼠靠近了猫就改变方向m_nRatDirection[i]=rand()%4;}switch(m_nRatDirection[i]){case 0: //向上移动if(m_rectRat[i].top-nRatMoveStep>89){m_rectRat[i].top-=nRatMoveStep;m_rectRat[i].bottom-=nRatMoveStep;m_nRaty[i]-=nRatMoveStep;}else{//运动到边界侧改变方向m_nRatDirection[i]=rand()%4;}break;case 1: //向下移动if(m_rectRat[i].bottom+nRatMoveStep<589){m_rectRat[i].top+=nRatMoveStep;m_rectRat[i].bottom+=nRatMoveStep;m_nRaty[i]+=nRatMoveStep;}else{//运动到边界侧改变方向m_nRatDirection[i]=rand()%4;}break;case 2: //向左移动if(m_rectRat[i].left-nRatMoveStep>93){m_rectRat[i].left-=nRatMoveStep;m_rectRat[i].right-=nRatMoveStep;m_nRatx[i]-=nRatMoveStep;}else{//运动到边界侧改变方向m_nRatDirection[i]=rand()%4;}break;case 3: //向右移动if(m_rectRat[i].right+nRatMoveStep<1120) {m_rectRat[i].left+=nRatMoveStep;m_rectRat[i].right+=nRatMoveStep;m_nRatx[i]+=nRatMoveStep;}else{//运动到边界侧改变方向m_nRatDirection[i]=rand()%4;}break;}//计算游戏剩余时间m_timeEnd=m_timeEnd.GetCurrentTime();m_timeWork=m_timeSet-(m_timeEnd-m_timeStart)InvalidateRect(CRect(200,0,560,160));// 时间显示位置if(!(m_timeWork.GetTotalSeconds())){ KillTimer(1);KillTimer(2);StartFlag=2;if(m_nRat>0){//游戏时间以到,老鼠还没抓完,失败m_nWinFlag=1;}else{//游戏时间未到,老鼠已经抓完,成功m_nWinFlag=0;}Invalidate();}}else if(m_timeWork.GetTotalSeconds()){ KillTimer(1);KillTimer(2);StartFlag=2;Invalidate();m_nWinFlag=0; }CView::OnTimer(nIDEvent);}void CCatCatchRatView::OnRestart(){//重新开始游戏的初始化工作,设置初始参数StartFlag=-1;m_nRat=RATMAX;m_timeWork=m_timeSet;m_nCatDirection=2;//计算猫和老鼠位图的初时位置和运动方向m_nCatx=m_rectClient.left+m_rectClient.Width()/2;m_nCaty=m_rectClient.top+m_rectClient.Height()/2;m_rectCat=CRect(m_nCatx,m_nCaty,m_nCatx+m_nCatw,m_nCaty+ m_nCath);srand((unsigned)time(NULL));for(int i=0;i<RATMAX;i++){m_nRatx[i]=m_rectClient.left+rand()%(m_rectClient.Width ()-m_nRatw);m_nRaty[i]=m_rectClient.top+rand()%(m_rectClient.Height( )-m_nRath);m_rectRat[i]=CRect(m_nRatx[i],m_nRaty[i],m_nRatx[i]+m_nR atw,m_nRaty[i]+m_nRath);m_nRatDirection[i]=rand()%4;m_bRatLive[i]=TRUE;}void CCatCatchRatView::OnKeyDown(UINT nChar, UINT nRepCnt,UINT nFlags){ if(StartFlag==1){//游戏开始时猫才可以移动InvalidateRect(m_rectCat,TRUE);switch(nChar)//代码过长且基本类似省略部分代码******************** {case VK_UP: //向上移动if(m_rectCat.top-m_nCatSpeed>89&&m_rectCat.top-m_nCatSpe ed<161&&m_rectCat.left<430){m_rectCat.top-=m_nCatSpeed;m_rectCat.bottom-=m_nCatSpeed;m_nCaty-=m_nCatSpeed;m_nCatDirection=0;if(***********)*************}break;case VK_DOWN: //向下移动if(m_rectCat.bottom-m_nCatSpeed<589){m_rectCat.top+=m_nCatSpeed;m_rectCat.bottom+=m_nCatSpeed;m_nCaty+=m_nCatSpeed;m_nCatDirection=1;if(***********)*************}break;case VK_LEFT: //向左移动if(m_rectCat.left-m_nCatSpeed>93){m_rectCat.left-=m_nCatSpeed;m_rectCat.right-=m_nCatSpeed;m_nCatx-=m_nCatSpeed;m_nCatDirection=2;if(***********)*************}}break;case VK_RIGHT: //向右移动if(m_rectCat.right+m_nCatSpeed<1120){m_rectCat.left+=m_nCatSpeed;m_rectCat.right+=m_nCatSpeed;m_nCatx+=m_nCatSpeed;m_nCatDirection=3;if(***********)*************}}break;}teRect(m_rectCat,FALSE);//判断猫的移动后是否抓住老鼠for(int i=0; i<RATMAX; i++){if(m_bRatLive[i] && (abs(m_nRatx[i]-m_nCatx)<m_nRatw) && (abs(m_nRaty[i]-m_nCaty)<m_nRath)){m_bRatLive[i]=FALSE;m_nRat--;InvalidateRect(m_rectRat[i]);InvalidateRect(CRect(410,100,560,160));} }} CView::OnKeyDown(nChar, nRepCnt, nFlags);}void CCatCatchRatView::OnUpdateStop(CCmdUI* pCmdUI) {pCmdUI->Enable(StartFlag==1);}//游戏过程中可以选停止菜单void CCatCatchRatView::OnSelect(){ CSelectDlg dlg;if(dlg.DoModal()==IDOK){m_nDifficulty=dlg.m_nDifficulty;switch(m_nDifficulty){case 2:m_nCatSpeed=8;m_nRatSpeed=2;m_timeSet=40;break;}5 运行结果1)创建位图资源(如图1所示):图1 2)显示迷宫(如图2所示):图2)3)窗口及控制按钮(如图3所示):图3参考贪吃蛇,可改变难度和时间(如图3所示):4)游戏运行界面(如图4所示):图46.总结在本次课程设计初期,我们遇到了许多难以解决的问题。