基于Matlab制作一款简单的龙舟小游戏_第1页
基于Matlab制作一款简单的龙舟小游戏_第2页
基于Matlab制作一款简单的龙舟小游戏_第3页
基于Matlab制作一款简单的龙舟小游戏_第4页
基于Matlab制作一款简单的龙舟小游戏_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第基于Matlab制作一款简单的龙舟小游戏没找到合适的背景就自己画了个,大家如果有更好看的可以换一下。。。

步骤

1创建Axes及图片导入

窗口创建:

Mainfig=figure('units','pixels','position',[50100760400],...

'Numbertitle','off','menubar','none','resize','off',...

'name','dragonBoat');

axes('parent',Mainfig,'position',[0011],...

'XLim',[0760],...

'YLim',[0400],...

'NextPlot','add',...

'layer','bottom',...

'Visible','on',...

'YDir','reverse',...

'XTick',[],...

'YTick',[]);

图片导入:

[bkg_C,~,~]=imread('river.png');

[boat_C,~,boat_Alp]=imread('boat.png');

[stone_C,~,stone_Alp]=imread('stone.png');

图片素材可以从这里拿哟

2创建timer函数移动背景

DrawBkgHdl=image([0760],[0400],bkg_C);

tempBkg_C=[bkg_C,bkg_C];

fps=20;

game=timer('ExecutionMode','FixedRate','Period',1/fps,'TimerFcn',@dragongame);

start(game)

functiondragongame(~,~)

t=t+6;

modt=mod(t,720);

newBkg_C=tempBkg_C(:,1+modt:684+modt,:);

set(DrawBkgHdl,'CData',newBkg_C)

3绘制石块并移动

其实是5个石块来回变位置,当一个石块位置减小到负数就把数值增加并重新绘制

stonePos=[600;870;1140;1410];

stonePos=[stonePos,randi([90,330],[4,1])];

fori=1:size(stonePos,1)

drawStoneHdl(i)=image([stonePos(i,1)-39stonePos(i,1)+39],[stonePos(i,2)-20stonePos(i,2)+20],stone_C,'AlphaData',stone_Alp);

functiondragongame(~,~)

%这里是之前写的背景部分代码

%。。。。。。。。。。。

%。。。。。。。。。。。

stonePos(:,1)=stonePos(:,1)-20/3;

stonePos(stonePos(:,1)0,2)=randi([90,330],[1,1]);

stonePos(stonePos(:,1)0,1)=stonePos(stonePos(:,1)0,1)+1080;

forii=1:size(stonePos,1)

set(drawStoneHdl(ii),'XData',[stonePos(ii,1)-39stonePos(ii,1)+39],...

'YData',[stonePos(ii,2)-20stonePos(ii,2)+20]);

4绘制船并创建鼠标回调

boatPos=[380,200];

DrawBoatHdl=image([boatPos(1)-75boatPos(1)+75],[boatPos(2)-50boatPos(2)+50],boat_C,'AlphaData',boat_Alp);

set(gcf,'WindowButtonMotionFcn',@moveBoat,'tag','mov')

functionmoveBoat(~,~)

xy=get(gca,'CurrentPoint');

temp_y=xy(1,2);

temp_y(temp_y100)=90;

temp_y(temp_y340)=330;

boatPos=[380,temp_y];

set(DrawBoatHdl,'YData',[temp_y-50temp_y+50]);

5碰撞判断函数

functionflag=judge(Bpos,Spos)

flag1=abs(Bpos(1)-Spos(:,1))

flag2=abs((Bpos(2)+35)-Spos(:,2))

flag3=flag1flag2;

flag=any(flag3);

dragongame函数做如下改写

functiondragongame(~,~)

%这里是之前一大堆代码

%。。。。。。。。。。

%。。。。。。。。。。

%。。。。。。。。。。

ifjudge(boatPos,stonePos)

stop(game)

set(gcf,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论