游戏“黄金矿工”设计思路讲课教案
- 格式:doc
- 大小:2.29 MB
- 文档页数:21
幼儿的采矿游戏怎么玩教案教案标题:幼儿的采矿游戏怎么玩教案教案目标:1. 帮助幼儿了解采矿的概念和过程。
2. 提供给幼儿参与采矿游戏的机会,以培养他们的观察力、协作能力和问题解决能力。
3. 通过游戏,促进幼儿的自主学习和创造力。
教案步骤:引入:1. 通过展示一些矿石或宝石的图片,引起幼儿的兴趣和好奇心。
2. 向幼儿解释什么是采矿,以及采矿的过程。
活动准备:1. 准备一个模拟采矿场景的游戏区域,包括一个沙盆或沙箱,一些矿石或宝石的模型,小铲子、筛子等工具。
2. 将矿石或宝石隐藏在沙子中,确保每个幼儿都能找到一些。
活动进行:1. 介绍游戏规则:幼儿们需要在沙子中找到隐藏的矿石或宝石,并将其放入自己的“矿石袋”中。
2. 鼓励幼儿们观察沙子中的细节,寻找可能隐藏矿石或宝石的迹象。
3. 提醒幼儿们注意使用小铲子和筛子等工具进行挖掘和筛选。
4. 鼓励幼儿们在找到矿石或宝石后,与其他幼儿分享他们的发现,并一起讨论它们的特点和价值。
5. 引导幼儿们思考采矿的过程,例如:找到矿石、挖掘、筛选、收集等。
活动总结:1. 邀请幼儿们一起回顾整个游戏过程,并讨论他们在游戏中的发现和体验。
2. 引导幼儿们思考采矿的重要性以及采矿对我们生活的影响。
3. 鼓励幼儿们将游戏中学到的知识和经验与实际生活联系起来。
延伸活动:1. 鼓励幼儿们在户外环境中观察和收集不同类型的石头或矿石,并与其他幼儿分享他们的收藏。
2. 组织一次参观当地的矿山或矿物博物馆,让幼儿们亲身了解真实的采矿过程和宝石的价值。
教案评估:观察幼儿在游戏中的参与程度、观察力、协作能力和问题解决能力的表现。
同时,通过与幼儿的交流,了解他们对采矿的理解和认识水平。
教案注意事项:1. 确保游戏区域的安全性,避免幼儿受伤。
2. 鼓励幼儿们尊重和分享彼此的发现,避免争抢和不和谐的行为。
3. 根据幼儿的年龄和发展水平,适当调整游戏的难度和挑战性。
4. 提供足够的时间给幼儿自由探索和玩耍,不要过于干预他们的活动。
java挖金块游戏课程设计一、课程目标知识目标:1. 让学生掌握Java基础语法,包括变量声明、数据类型、运算符和流程控制语句;2. 让学生了解面向对象编程的基本概念,如类、对象、方法和继承;3. 帮助学生理解数组的使用,包括一维数组和二维数组;4. 引导学生掌握Java图形用户界面编程,如Swing组件的使用。
技能目标:1. 培养学生运用Java语言编写简单游戏的能力;2. 培养学生运用面向对象编程思想进行问题分析、设计和实现的能力;3. 提高学生团队协作和沟通能力,能在项目开发中分工合作,共同完成任务;4. 培养学生独立调试和解决问题的能力。
情感态度价值观目标:1. 激发学生对编程的兴趣,培养其主动学习和探究的精神;2. 培养学生面对困难和挑战时保持积极的态度,勇于尝试和克服;3. 培养学生具备良好的团队协作精神,尊重他人意见,共同完成任务;4. 引导学生关注社会热点问题,将所学知识应用于实际生活,提高社会责任感。
本课程针对高年级学生,结合Java挖金块游戏项目,注重理论与实践相结合,旨在提高学生的编程能力和综合素质。
课程要求学生在掌握基本知识的基础上,充分发挥自身潜能,通过团队协作完成具有一定难度的游戏项目。
通过本课程的学习,使学生能够将所学知识应用于实际编程实践,为未来进一步学习和职业发展打下坚实基础。
二、教学内容1. Java基础语法:变量声明、数据类型、运算符、流程控制语句(包括条件语句和循环语句);2. 面向对象编程:类与对象、构造方法、封装、继承和多态;3. 数组:一维数组、二维数组、数组操作方法;4. Java图形用户界面编程:Swing组件、事件处理、布局管理器;5. 游戏设计:游戏框架搭建、角色控制、碰撞检测、分数统计;6. 项目实践:分组进行挖金块游戏项目开发,涵盖需求分析、设计、编码、测试等环节。
教学内容与课本关联性如下:1. Java基础语法:对应教材第1-3章;2. 面向对象编程:对应教材第4-6章;3. 数组:对应教材第7章;4. Java图形用户界面编程:对应教材第8章;5. 游戏设计:结合教材实例,进行拓展教学;6. 项目实践:结合教材内容和实际案例,进行综合应用。
C语言课程设计--黄金矿工一、实验内容玩家通过键盘的按键控制矿工抓取金块,将钩子碰触到的金块抓取过来。
要求如下:1.游戏的初始界面如下图(一),单机键盘上的空格键进入游戏,进入后界面如图(二),金块的总数是20,大小位置是随机的。
2.在没有抓取状态下,钩子左右摆动,此时矿工的是静止的。
当钩子摆动到一定角度,玩家可以单击键盘上的上下左右键中的下方向键控制矿工伸出长钩,抓取金子,此时矿工是向下摇动转轴。
获取到金子往回拉后,矿工是不断转动转轴,知道金子拉动到钩子初始处,矿工恢复静止,钩子继续左右摇摆,直到玩家再次单击向下方向键。
3.伸出的钩子如果碰触到金子,则钩子和金子一起往回拉,回收的速度根据抓取到的金子的大小变化而变化,金子越大,回拉的速度越慢,反之亦然。
如果钩子没有碰触到金子,而是碰触到左右和下的边界,则钩子保持原来的速度往回收。
4.抓取到的金子拉回到转轴处消失,此时金子数目减少一个。
如果玩家将所有金子抓取完,游戏返回到如图(一)的初始界面。
图(一)图(二)二、实验指南实验一开始实验【实验任务】步骤一、打开FunCode,创建一个的C语言项目;步骤二、导入Goldman模板。
【实验思路】按实验指导完成。
【实验指导】1、打开FunCode,点击“项目”菜单,选择“创建C语言工程”注意:工程名名称要求字母开头,只能包含字母和数字,且名字中间不能有空格。
2、点击菜单“项目”中的“导入地图模块”,如图一。
跳出一个对话框,选中“Goldman”模板,点击“导入到工程”按钮,如图二。
图一图二3、导入成功后的,界面如下图所示:实验二单击空格键,开始游戏【实验内容】步骤、启动游戏显示“空格开始”,单击空格键进入游戏初始界面。
【实验思路】系统会自动响应d OnKeyDown函数来响应键盘按下消息,这部分代码实现在main.cpp里。
我们要做的就是通过在main.cpp的dOnKeyDown函数里实现我们的代码。
当用户单击键盘上的空格键之后,设置GameBegin即“空格开始”精灵不可见。
小小矿工,宝藏探索一、教学价值小小矿工,宝藏探索是一款幼儿园常用的游戏,它可以帮助幼儿们在玩乐中了解挖掘机的工作原理和探险的乐趣,同时也能够培养幼儿们的团队协作意识和解决问题的能力。
本教案旨在通过游戏教学的方式,让幼儿们更好地理解和掌握知识,提高他们的学习兴趣和主动性。
二、教学目标1.了解挖掘机的工作原理和操作方法;2.培养幼儿们的团队协作意识和解决问题的能力;3.提高幼儿们的空间想象力和判断能力;4.通过游戏教学的方式,让幼儿们更好地理解和掌握知识。
三、教学区域教室或活动室。
四、教学准备1.小小矿工,宝藏探索游戏;2.小型矿车、砖块、铁块、玻璃等模拟工具;3.幼儿专用手套;4.教师PPT。
五、教学介绍1.教师介绍游戏背景和玩法;2.介绍挖掘机的工作原理和操作方法;3.组织幼儿们进行游戏体验。
六、教学重点1.了解挖掘机的工作原理和操作方法;2.培养幼儿们的团队协作意识和解决问题的能力;3.提高幼儿们的空间想象力和判断能力;4.通过游戏教学的方式,让幼儿们更好地理解和掌握知识。
七、教学方法1.游戏教学法;2.小组合作教学法;3.教学展示法。
八、教学过程1.游戏背景介绍和PPT展示(5分钟);2.幼儿分组,每组2-3人(5分钟);3.给每组提供小型矿车、砖块、铁块、玻璃等模拟工具,让幼儿们自由组装挖掘机(10分钟);4.每组选择一名幼儿扮演“挖掘机司机”,其他幼儿扮演“矿工”,组成小型团队,进行宝藏探险(20分钟);5.游戏结束后,教师进行总结和点评(10分钟)。
九、教学反思1.游戏的难度有些大,需要教师给予适当引导;2.在游戏过程中幼儿们出现了一些问题,需要及时处理;3.教师需要对幼儿们的表现进行评估和记录。
十、教学案例小小矿工,宝藏探索是一款非常适合幼儿园教学的游戏。
在游戏中,幼儿们可以了解到挖掘机的工作原理和操作方法,培养团队协作意识和解决问题的能力,并且还可以提高幼儿们的空间想象力和判断能力。
幼儿园室内挖矿小游戏教案教案标题:幼儿园室内挖矿小游戏教案教案目标:1. 帮助幼儿了解挖矿活动的基本概念和过程。
2. 培养幼儿的动手能力和团队合作精神。
3. 提升幼儿的观察力、注意力和问题解决能力。
教学资源:1. 室内空间(可使用教室或者幼儿园的室内游戏区域)2. 玩沙盘或者玩沙池3. 小铲子、小篮子、小铲子等挖矿工具4. 小石头、小宝石、小金块等挖矿道具5. 图片或视频素材,用于介绍挖矿活动的背景知识教学步骤:引入活动:1. 创设情境:通过展示图片或者播放视频,向幼儿介绍挖矿活动的背景知识,如矿石的形状、颜色和用途等。
2. 引发思考:提问幼儿,让他们思考挖矿活动需要哪些工具和技能。
活动准备:1. 将玩沙盘或者玩沙池放置在教室或者室内游戏区域,并放入一些小石头、小宝石和小金块等挖矿道具。
2. 准备好小铲子、小篮子、小铲子等挖矿工具,确保每个幼儿都能获得一套。
活动实施:1. 介绍挖矿规则:向幼儿解释挖矿活动的规则,如每个幼儿可以选择一个挖矿道具,使用挖矿工具在沙盘或者沙池中挖掘,然后将挖到的石头、宝石或金块放入篮子中。
2. 指导操作:示范如何使用挖矿工具挖掘,鼓励幼儿跟随示范进行操作。
3. 分组合作:将幼儿分成小组,让他们一起挖掘,并鼓励他们相互合作,分享挖到的道具。
4. 观察和讨论:引导幼儿观察挖到的石头、宝石和金块,让他们描述其形状、颜色和质地等特征。
5. 活动总结:与幼儿一起回顾挖矿活动的过程和收获,鼓励他们分享自己的体验和感受。
教学延伸:1. 扩展挖矿活动:可以引入更多的挖矿道具,如挖矿车、挖掘机等,让幼儿体验不同的挖矿方式。
2. 制作挖矿工具:鼓励幼儿使用废旧材料制作属于自己的挖矿工具,培养他们的创造力和环保意识。
3. 探索矿石知识:引导幼儿进一步了解不同类型的矿石,可以通过绘画、手工制作等方式展示他们的学习成果。
评估方法:1. 观察幼儿在挖矿活动中的参与程度和合作精神。
2. 收集幼儿对挖矿活动的反馈和体验,了解他们对活动的理解和学习成果。
教你⽤Matlab制作黄⾦矿⼯⼩游戏⽬录效果步骤图⽚准备背景构建绘制⽖⼦让⽖⼦转起来绘制⽯块点击下箭头移动⽖⼦⽖⼦与⽯头和边缘碰触判断抓取⽯块和显⽰⾦钱完整代码效果步骤图⽚准备背景构建function goldMinerMainfig=figure('units','pixels','position',[50 100 750 500],...'Numbertitle','off','menubar','none','resize','off',...'name','goldMiner');axes('parent',Mainfig,'position',[0 0 1 1],...'XLim', [0 750],...'YLim', [0 500],...'NextPlot','add',...'layer','bottom',...'Visible','on',...'YDir','reverse',...'XTick',[], ...'YTick',[]);bkgPic=imread('.\pic\bkg.png');image([0,750],[0,500],bkgPic)[manPic,~,manAlp]=imread('.\pic\man.png');image([400-60,400+60],[49.5-45,49.5+45],manPic,'AlphaData',manAlp)绘制⽖⼦由于⽖⼦要不断调整⾓度因此⽤surface格式绘制,我们需要将⽖⼦图⽚矩阵范围调整⾄[0,1],并将透明处数值调成nan [clawPic,~,clawAlp]=imread('.\Pic\claw.png');clawPic=double(clawPic)./255;clawPicR=clawPic(:,:,1);clawPicG=clawPic(:,:,2);clawPicB=clawPic(:,:,3);clawPicR(clawAlp<1)=nan;clawPicG(clawAlp<1)=nan;clawPicB(clawAlp<1)=nan;clawPic(:,:,1)=clawPicR;clawPic(:,:,2)=clawPicG;clawPic(:,:,3)=clawPicB;clawPos=[380,75];ropePos=[380,75];[xgrid,ygrid]=meshgrid((1:size(clawAlp,2))./2,(1:size(clawAlp,1))./2);xgrid=xgrid-size(clawAlp,2)/4;thetaList=linspace(-2*pi/5,2*pi/5,50);thetaIndex=1;theta=thetaList(thetaIndex);%当前⽖⼦转动⾓度v=0;%⽖⼦下移速度dir=1;%1或-1⽖⼦转动⽅向grabbing=false;%是否正在抓取⽯块cost=cos(theta);sint=sin(theta);rotateX=cost.*xgrid+sint.*ygrid;rotateY=cost.*ygrid-sint.*xgrid;drawClawHdl=surface(rotateX+clawPos(1),rotateY+clawPos(2),...zeros(size(clawAlp)),clawPic,...'EdgeColor','none');drawLineHdl=plot([clawPos(1),ropePos(1)],[clawPos(2),ropePos(2)],'k','LineWidth',2);让⽖⼦转起来⽖⼦旋转就是单纯的使⽤旋转矩阵:fps=20;game=timer('ExecutionMode', 'FixedRate', 'Period',1/fps, 'TimerFcn', @minergame);start(game)function minergame(~,~)if ~grabbingswitch 1case thetaIndex==1,dir=1;case thetaIndex==50,dir=-1;endthetaIndex=thetaIndex+dir;theta=thetaList(thetaIndex);cost=cos(theta);sint=sin(theta);rotateX=cost.*xgrid+sint.*ygrid;rotateY=cost.*ygrid-sint.*xgrid;elseendend绘制⽯块stoneName={'gold','gold','stone1','stone2','diamond'};stonePic{length(stoneName)}=[];stoneAlp{length(stoneName)}=[];for i=1:length(stoneName)[C,~,Alp]=imread(['.\pic\',stoneName{i},'.png']);stonePic{i}=C;stoneAlp{i}=Alp;endstoneV=[-2,-3,-3,-3,-5];%拿起⽯头后⽖⼦移动速度stonePrice=[800,500,200,100,1000];stoneSize=[50,50;30,30;24,20;15,12;8,8];stonePos=[200,300;400,350;500,200;50,240;50,300;700,420;170,180];stoneType=[1,2,3,4,5,1,2];stoneTag=1:length(stoneType);stoneXrange=[stonePos(:,1)-stoneSize(stoneType',1),stonePos(:,1)+stoneSize(stoneType',1)]; stoneYrange=[stonePos(:,2)-stoneSize(stoneType',2),stonePos(:,2)+stoneSize(stoneType',2)]; for i=1:length(stoneTag)drawStone(stonePos(i,:),stoneType(i),stoneTag(i))endfunction drawStone(pos,i,j)image([-stoneSize(i,1),stoneSize(i,1)]+pos(1),...[-stoneSize(i,2),stoneSize(i,2)]+pos(2),...stonePic{i},...'AlphaData',stoneAlp{i},...'UserData',j)end点击下箭头移动⽖⼦set(gcf, 'KeyPressFcn', @key)function key(~,event)switch event.Keycase 'downarrow'grabbing=true;v=4;endendfunction minergame(~,~)if ~grabbing%这⾥是让⽖⼦转动的⼀堆代码%。
中国石油大学(华东)程序设计实训报告“黄金矿工”实验报告游戏截图图一:开始游戏图二:按下空格键开始游戏,出现金块,钩子转动图三:按下↓键,钩子停止转动,开始下放,抓取金块图四:抓完金块后返回初始界面功能描述1、游戏运行,初始界面出现“空格开始”的提示。
2、玩家按下空格键,开始游戏。
3、游戏开始后,界面随机出现20个大小不同的金子,并且钩子开始转动。
4、按下↓键,钩子停止转动,下放,抓取金子。
5、抓到金子后,返回到初始位置,被抓到的金子消失。
6、用户继续按下↓键,继续抓取金子,直到金子被抓取完,这样一局游戏完成。
7、一局游戏完成后,屏幕重新出现“空格开始”的标志,用户按下空格可以继续游戏,如此往复。
流程图:数据结构:1、g_fGoldBornMinX 金子左边界2、g_fGoldBornMaxX 金子右边界3、g_fGoldBornMinY 金子上边界4、g_fGoldBornMaxY 金子下边界5、g_iGoldCount 屏幕中金子数目6、g_iGameState 设置游戏状态7、szGotGoldName[20] 当前抓到金子的名称8、g_fHookRotation 钩子的转动的角速度9、g_fEmptyHookSpeed 钩子的下放的初始速度10、g_fHookStartPosX 存储钩子的初始X位置11、g_fHookStartPosY 存储钩子的初始Y位置算法描述:游戏状态g_iGameState分为三种状态0,1,2 ,其中0表示游戏结束状态,1表示游戏初始化,2则表示游戏运行状态;0 → 1的转换为“空格开始”;1 →2的转换自然发生,即游戏初始化函数后会自动将游戏状态从1置为2;2 表示游戏运行状态,在该状态,按下↓键可以抓取金子;2 → 0的转换为当金子全被抓完后会自动将游戏状态从2置为0;金子精灵的初始化:1、创建金子精灵的对象;2、生成大小为4的小金块10个、大小为6的中金块6个、大小为8的大金块4个,并保存tmpName数组中,随机获取每个金子的坐标;3、隐藏“空格开始”精灵;4、设置屏幕中剩下的金子数目为20,每当被抓走的一块金子消失后屏幕中剩下的金子数目减1;5、当屏幕中剩下的金子数目为0时,一局游戏结束,返回初始界面,“空格开始”精灵出现;6、重新进行金子精灵的初始化;dOnKeyDown(const int iKey, const bool bAltPress, const bool bShiftPress, const bool bCtrlPress ) 游戏开始和控制按钮:1、游戏还未开始,即游戏状态为0,如果空格按被下,则将游戏状态改为1,此时对程序的数据进行初始化,“空格开始”精灵消失,金子出现,钩子转动;2、游戏状态为0时并按下空格键后,,如果按下↓键,钩子开始下放抓金子,当抓到金子后,游戏的状态变为2游戏正式开始运行;3、游戏状态为2时,钩子抓住金子后,按照金子的大小设置金子的速度,金子越大,回拉速度越小;4、当钩子和金子回到初始位置后,被抓的金子消失;源代码:在Main.cpp文件中//-----------------------------------------------------------------------------////-----------------------------------------------------------------------------#include "CommonAPI.h"#include "stdio.h"#include "string.h"void DrawHookLine();int g_fGoldBornMinX = 0;int g_fGoldBornMaxX = 0;int g_fGoldBornMinY = 0;int g_fGoldBornMaxY = 0;int g_iGoldCount = 20;int g_iGameState=2;int flag=1;int flagnum=0;char szGotGoldName[20] ; //当前抓到金子的名称float g_fHookRotation = 0.f;float g_fEmptyHookSpeed =35.f;float fTimeDelta;float g_fHookStartPosX; //存储钩子的初始X位置float g_fHookStartPosY; //存储钩子的初始Y位置/////////////////////////////////////////////////////////////////////////////////////////// //// 主函数入口//////////////////////////////////////////////////////////////////////////////////////////// int PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){// 初始化游戏引擎if( !dInitGameEngine( hInstance, lpCmdLine ) )return 0;// 游戏初始化代码dSetWindowTitle("黄金矿工");g_fGoldBornMinX = dGetScreenLeft() + 5; //金子左边界g_fGoldBornMaxX = dGetScreenRight() - 5; //金子右边界g_fGoldBornMinY = dGetScreenTop() + 20; //金子上边界g_fGoldBornMaxY = dGetScreenBottom() - 5; //金子下边界g_fHookStartPosX = dGetSpritePositionX("GoldHook"); //获取钩子的初始X坐标g_fHookStartPosY = dGetSpritePositionY("GoldHook"); //获取钩子的初始Y坐标dSetSpriteCollisionSend("goldHook", 1);dSetSpriteCollisionReceive("goldTemplate", 1);const float fRotateSpeed = 45.f; // 摇摆速度,单位度/秒int iHookRotToLeft = 1; //钩子摆动的方向:1 ← ;0 →float fTimeDelta = dGetTimeDelta();// 引擎主循环,处理屏幕图像刷新等工作while( dEngineMainLoop() ){// 获取两次调用之间的时间差,传递给游戏逻辑处理float fTimeDelta = dGetTimeDelta();DrawHookLine();// 执行游戏主循环if(g_iGameState == 0){float fThisRotate = fRotateSpeed * fTimeDelta;if( iHookRotToLeft ){g_fHookRotation += fThisRotate;if( g_fHookRotation >= 180.f ){g_fHookRotation = 180.f;iHookRotToLeft = 0;}}else{g_fHookRotation -= fThisRotate;if( g_fHookRotation <= 0.f ){g_fHookRotation = 0.f;iHookRotToLeft = 1;}}dSetSpriteRotation("GoldHook",g_fHookRotation);}else if(g_iGameState == 1){dAnimateSpritePlayAnimation("goldMan","GolderManAnimation3", 1 ); //播放拉金块的动作//获取钩子X方向的速度float fSpeedX = dGetSpriteLinearVelocityX("GoldHook");//获取钩子Y方向的速度float fSpeedY = dGetSpriteLinearVelocityY("GoldHook");//当速度接近为0时,即可判定其已到达初始点if( fSpeedX < 0.00001f && fSpeedX > -0.00001f && fSpeedY < 0.00001f && fSpeedY > -0.00001f ){//解除金块与钩子的锚定dSpriteDismount(szGotGoldName);//删除获取的金块dDeleteSprite(szGotGoldName);//回拉结束,设定状态为0g_iGameState = 0;//播放矿工的动画,即准备拉金子的动画if(flagnum){g_iGoldCount--;}}}// 播放挖金者的动作(恢复初始守候动作)dAnimateSpritePlayAnimation("goldMan", "GolderManAnimation2", 1);if(g_iGoldCount==0){g_iGameState = 0;dSetSpriteVisible("GameBegin",1);g_iGoldCount = 20;flag=1;}};dAnimateSpritePlayAnimation("goldMan", "GolderManAnimation2", 1);// 关闭游戏引擎dShutdownGameEngine();return 0;}//========================================================================= =//// 引擎捕捉鼠标移动消息后,将调用到本函数void dOnMouseMove( const float fMouseX, const float fMouseY ){// 可以在此添加游戏需要的响应函数}//========================================================================= =//// 引擎捕捉鼠标点击消息后,将调用到本函数void dOnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY ){// 可以在此添加游戏需要的响应函数}//========================================================================= =//// 引擎捕捉键盘按下消息后,将调用到本函数// iAltPress iShiftPress iCtrlPress 分别为判断Shift,Alt,Ctrl当前是否也处于按下状态。
C语言课程设计报告
机房名称
时间
学院
专业班级
姓名
学号
指导教师
五、运行相关界面及简介
Ⅰ.运行程序进入游戏的第一个场景:左上方是倒计时系统,由60秒逐渐递减;右上方是计分系统,钩子抓取金子等时会自动加分。
图 2
Ⅱ、按下空格键,金子,钻石,炸弹及石头自由分布;矿工手中的钩子不停地循环转动;倒计时系统开始倒计时。
图 3
26
C语言课程设计报告
Ⅲ.待到合适时机,按下键,钩子开始运动,抓取金子等。
①抓到金子时,金子随钩子一起返回矿工手中并消失,积分系统自动加20分
图4
②抓到钻石时,钻石随钩子一起返回矿工手中并消失,且绳子速度加快,积分系统
自动加50分
图 5
③抓到炸弹时,炸弹爆炸,不加分,钩子回去
图6
⑤抓到石头时,钻石随钩子一起返回矿工手中并消失,但钩子的速度减缓,积分系统自
动加5分
图 7
28
C语言课程设计报告
⑤碰到边界时,钩子按原路返回矿工手中,但钩子的速度不变。
图8
Ⅳ.当计时器倒数到0时,游戏结束。
计分系统不再加分。
图9
图10 Ⅴ.按下回车键,返回初始状态
图11
30
C语言课程设计报告VI.制作过程中
附图 12. 制作中。
黄⾦矿⼯主题活动⽅案(学校版)o情景体验励志活动课程【活动背景】引⾔:⼈类社会发展到今天,那种依靠个⼈单打独⽃的时代已经远去,所有具备远见卓识的领袖早已开始将⼒量放在了如何打造⼀⽀优秀的团队的焦点上,因为作为万物之灵的我们,依靠团队所能提升的能量将远远超过个⼈和团体的⼒量。
⽽当今时代绝对是依靠团队成就未来的时代!【活动说明】⼀座荒芜的⼩岛上,空降⼀群探险家,他们来这座岛的⽬的就是为了岛上的⾦矿,如何在陌⽣的⼩岛上⽣存并且找到⾦矿,完全靠探险家坚毅的意志⼒和冒险家与冒险家之间的⽆间合作!【活动⽬标】通过本次主题活动,不仅让学⽣在繁忙的学业中体验⼤⾃然、放松⾝⼼,也能提⾼学⽣为同⼀⽬标通⼒合作的意识与能⼒,增强团队凝聚⼒、向⼼⼒、增进对集体的参与意识与责任⼼,提⾼学⽣相互之间的信任度,营造良好的团队氛围。
【活动内容】学⽣组队⾃⾏在园区中完成“黄⾦矿⼯”主题活动!第⼀部分:刚抵达⼩岛的探险家们,还不熟悉这⾥的情况,由本次活动的培训师来介绍这座⼩岛的具体情况。
15-20⼈为⼀组,完成团队组建:起队名、选队长、设计队徽、创作队歌、队训、设计造型等;各⼩组按规定步⼊会场并相互展⽰各⾃的成果;培训师带领⼤家做热⾝活动;培训师讲解活动安全说明、注意事项与活动期间的具体时间安排。
第⼆部分:浮光跃⾦巧建家园绳结引路识⽂谈字矮⼈牧场荆棘满途铸造祭坛魔杖宝⽯浮光跃⾦:冒险家们找到了⾦矿,但⾦矿现在埋在沙⼦中,利⽤⼿中的资源才能挖出⾦矿巧建家园:冒险家来到了陌⽣的⼩岛上,为了⽣存他们必须搭建出⾃⼰的帐篷绳结引路:冒险家在森林迷路了,如何在森林中⾛出去并且到达下⼀站,全靠简单的绳结作为路标引路识⽂谈字:⼩岛上存在着各种稀奇古怪的⽂字,冒险家们如何从这些⽂字中破译出下⼀站的线索,全看冒险家的想象⼒与观察⼒了矮⼈牧场:冒险家们来到了⼀座矮⼈经营的牧场,矮⼈答应给冒险家指出下⼀站的⽅向,但是条件是帮助矮⼈把⽺赶回⽺圈中,为了向下⼀站进发,冒险家们决定帮助矮⼈赶⽺荆棘满途:冒险家们来到⼀⽚满是荆棘的森林,只有穿过这⽚荆棘,冒险家才能来到下⼀站,伸⼿灵敏的冒险家们是否会不费吹灰之⼒穿越这⽚茂密的荆棘呢铸造祭坛:冒险家们在前进的途中碰到两个部族,部族长年对⽴,且彼此互相厮杀!冒险家们为了两个部族能够重归于好,决定建⽴⼀座祭坛,作为两个部族之间和解的见证,造好祭坛的冒险家从两个部族⾸领⼝中得知下⼀站的⽅向魔杖宝⽯:冒险家们在前进的途中碰到了被困的精灵,从精灵⼝中得知它们是被邪恶的⼥巫所困,想要解救善良的精灵惩罚邪恶的⼥巫,只造出三把传说中的魔杖,才能救出精灵,打败⼥巫第三部分:满载⽽归历经千⾟万苦得到⾦矿的冒险家们,终于回到了家园。
实验:黄金矿工完成本实验后,可以实现矿工抓金子并计分的效果,如下所示:复制金块学习目标学习应用dGetScreenLeft,dGetScreenRight,dGetScreenTop,dGetScreenBottom学习应用srand函数。
这节我们实现黄金矿工的金块随机分布,并设置不同金块的大小,为后续的抓取金块做好准备。
Step1:图片资源导入新建一个新的项目,取名为GoldenManDemo。
添加如图所示资源到环境中:并按如下所示布置图片位置:并为金子取名为goldTemplateStep2:本实验用到的API/* dGetScreenLeft:获取世界边界之左边X坐标* 返回值:左边界X坐标*/extern float dGetScreenLeft();/* dGetScreenTop:获取世界边界之上边Y坐标* 返回值:上边界Y坐标*/extern float dGetScreenTop();/* dGetScreenRight:获取世界边界之右边X坐标* 返回值:右边界X坐标*/extern float dGetScreenRight();/* dGetScreenBottom:获取世界边界之下边Y坐标* 返回值:下边界Y坐标*/extern float dGetScreenBottom();/* dSetSpriteWidth:设置精灵外形宽度* 参数szName:精灵名字* 参数fWidth:宽度值,大于0*/extern void dSetSpriteWidth( const char *szName, const float fWidth );/* dGetSpriteWidth:获取精灵外形宽度* 参数szName:精灵名字* 返回值:精灵宽度值*/extern float dGetSpriteWidth( const char *szName );/* dRandomRange:获取一个位于参数1到参数2之间的随机数* 返回值:int,范围iMin - iMax* 参数iMin:小于iMax的整数* 参数iMax:大于iMin的整数*/extern int dRandomRange( const int iMin, const int iMax );Step 3:思路阐述要实现金块的随机分布,首先需要利用模板复制一定数量的金块,然后将他们随机布置在窗口中,可以通过dSetSpritePosition来设置金块的横纵坐标。
接下来要面临的问题就是,如何获取窗口中不同位置的坐标。
利用dGetScreenLeft,dGetScreenRight,dGetScreenBottom,dGetScreenTop来获取窗口的范围,然后使用dRandomRange在该范围中随机一个新的坐标。
对于金块的大小设置,可以利用dSetSpriteHeight和dSetSpriteWidth来实现。
Step 4:代码详解首先定义全局变量,定义如下全局变量:int g_fGoldBornMinX = 0;int g_fGoldBornMaxX = 0;int g_fGoldBornMinY = 0;int g_fGoldBornMaxY = 0;int g_iGoldCount = 0;金块布置属于初始化工作,在WinMain的初始化部分添加如下代码:dSetWindowTitle("黄金矿工");g_iGoldCount=20;//金子数量g_fGoldBornMinX = dGetScreenLeft() + 5; //金子左边界g_fGoldBornMaxX = dGetScreenRight() - 5; //金子右边界g_fGoldBornMinY = dGetScreenTop() + 20; //金子上边界g_fGoldBornMaxY = dGetScreenBottom() – 5; //金子下边界利用循环生成20个金子,以goldTemplate为模板int iLoop = 0; //循环变量控制int iSize = 4, iPosX = 0, iPosY = 0; //iSize表示金块大小的变量for( iLoop = 0; iLoop < g_iGoldCount; iLoop++ ){if( iLoop < 10 ) //生成10个小金块,大小为4{iSize = 4;}else if( iLoop >= 10 && iLoop < 16 ) //生成6个中金块,大小为6 {iSize = 6;}else //生成4个大金块,大小为8{iSize = 8;}//初始化金子精灵实例char* tmpName;tmpName=dMakeSpriteName("GoldBlock",iLoop); //生成金块名字dCloneSprite("goldTemplate",tmpName);dSetSpriteWidth(tmpName,(float)iSize); //设置金块的宽度dSetSpriteHeight(tmpName,(float)iSize); //设置金块的高度//设置金子精灵位置iPosX = dRandomRange(g_fGoldBornMinX, g_fGoldBornMaxX);iPosY = dRandomRange(g_fGoldBornMinY, g_fGoldBornMaxY);dSetSpritePosition(tmpName,(float)iPosX, (float)iPosY);}编译运行,可得到如下所示的效果:练习:1.自定义金子的大小和数量;旋转钩子学习目标学习应用dSetSpriteRotation函数学会利用屏幕刷新时间fTimeDelta来实现一些复杂的操作。
这节我们实现黄金矿工的钩子180度来回转动,这样矿工就可以控制抓取范围了,也为后面的抓取金子做好准备。
Step1:图片资源导入点击添加一个新的动画添加GolderManAnimation1,GolderManAnimation2,GolderManAnimation3到环境中,添加完后效果如图:将GolderManAnimation2拖进屏幕,并取名为GoldMan,如下图所示:同理,将静态精灵中的钩子,拖进屏幕,按初始界面排放。
并在右侧的“编辑”中设置名称如下:钩子布置好后的效果如下:Step2:本实验用到的API/* dSetSpriteRotation:设置精灵的旋转角度* 参数szName:精灵名字* 参数fRot:旋转角度,范围0 - 360*/extern void dSetSpriteRotation( const char *szName, const float fRot );Step 3:思路阐述实现钩子的180度来回摆动,其实就是不断地设置钩子与地面的夹角从0—180度不断地变化,可以利用dSetSpriteRotation来进行设置。
为了使钩子以恒定的速度来回摆动,我们可以自定义一个初始化速度speed,然后利用游戏屏幕刷新的时间fTimeDelta来实现,即speed * fTimeDelta即为当前钩子所在的角度位置。
Step 4:代码及注释首先定义全局变量,定义如下全局变量:float g_fHookRotation = 0.f; //钩子与地面的夹角;在WinMain的初始化部分,即金块分布的for循环下方添加:const float fRotateSpeed = 45.f; // 摇摆速度,单位度/秒int iHookRotToLeft = 1; //钩子摆动的方向:1 ←;0 →由于钩子摆动在游戏过程中一直进行,所以应该将摆动的代码置于while循环中,在float fTimeDelta = dGetTimeDelta();下方添加如下代码:float fThisRotate = fRotateSpeed * fTimeDelta; // 本次旋转的角度if( iHookRotToLeft ){ //向左转,度数不断变大g_fHookRotation += fThisRotate;if( g_fHookRotation >= 180.f ){ //大于180,置为向右转,即0g_fHookRotation = 180.f;iHookRotToLeft = 0;}}Else{ //向右转,度数不断变小g_fHookRotation -= fThisRotate; //小于0,置为向左转,即 1if( g_fHookRotation <= 0.f ){g_fHookRotation = 0.f;iHookRotToLeft = 1;}}dSetSpriteRotation("GoldHook",g_fHookRotation); //设置钩子的当前角度编译运行,可得到如下所示的效果:练习:1.使钩子从左往右进行旋转释放绳索学习目标学习应用dSetSpriteLinearVelocityPolar,dAnimateSpritePlayAnimation函数学会利用全局变量来控制游戏的运行状态。
这节我们实现黄金矿工在某一角度放下绳索的操作,为之后的真正抓取金子做好准备Step1:图片资源编辑打开funcode,单击地图上的矿工精灵图像,在显示框的上面五个选择左数第二个“编辑此精灵的链接点”,如图所示按如图所示依次单击这位置显示0,保存即可。
同上,点击地图上的钩子精灵,选择“编辑此精灵的链接点”,依次单击这个位置显示0,最后保存即可。
Step2:本实验用到的API/* dSetSpriteLinearVelocityPolar:按角度朝向设置精灵移动速度* 参数szName:精灵名字* 参数fSpeed:移动速度* 参数fPolar:角度朝向*/extern void dSetSpriteLinearVelocityPolar( const char *szName, const float fSpeed, const float fPolar );/* dAnimateSpritePlayAnimation:动画精灵播放动画* 参数szName:精灵名字* 参数szAnim:动画名字* 参数iRestore:播放完毕后是否恢复当前动画. 1 恢复0 不恢复* 返回值:是否播放成功, 1 : 成功0 :不成功*/extern int dAnimateSpritePlayAnimation( const char *szName, const char *szAnim, const int iRestore );/* dGetSpriteLinkPointPosX:获取精灵链接点X坐标。