matlab各种游戏编程大全俄罗斯方块贪吃蛇拼图五子棋黑白棋华容道等.docx

上传人:b****4 文档编号:3635428 上传时间:2022-11-24 格式:DOCX 页数:118 大小:242.51KB
下载 相关 举报
matlab各种游戏编程大全俄罗斯方块贪吃蛇拼图五子棋黑白棋华容道等.docx_第1页
第1页 / 共118页
matlab各种游戏编程大全俄罗斯方块贪吃蛇拼图五子棋黑白棋华容道等.docx_第2页
第2页 / 共118页
matlab各种游戏编程大全俄罗斯方块贪吃蛇拼图五子棋黑白棋华容道等.docx_第3页
第3页 / 共118页
matlab各种游戏编程大全俄罗斯方块贪吃蛇拼图五子棋黑白棋华容道等.docx_第4页
第4页 / 共118页
matlab各种游戏编程大全俄罗斯方块贪吃蛇拼图五子棋黑白棋华容道等.docx_第5页
第5页 / 共118页
点击查看更多>>
下载资源
资源描述

matlab各种游戏编程大全俄罗斯方块贪吃蛇拼图五子棋黑白棋华容道等.docx

《matlab各种游戏编程大全俄罗斯方块贪吃蛇拼图五子棋黑白棋华容道等.docx》由会员分享,可在线阅读,更多相关《matlab各种游戏编程大全俄罗斯方块贪吃蛇拼图五子棋黑白棋华容道等.docx(118页珍藏版)》请在冰豆网上搜索。

matlab各种游戏编程大全俄罗斯方块贪吃蛇拼图五子棋黑白棋华容道等.docx

matlab各种游戏编程大全俄罗斯方块贪吃蛇拼图五子棋黑白棋华容道等

用matlab编写的俄罗斯方块小游戏

∙functionRussiaBlock(varargin)

ifnargin==0

   

 OldHandle=findobj('Type','figure','Tag','RussiaBlock');

 ifishandle(OldHandle)

 delete(OldHandle);

 end

   

 FigureHandle=figure('Name','俄罗斯方块MATLAB版','Tag','RussiaBlock','NumberTitle','off',...

 'Menubar','none','DoubleBuffer','on','Resize','off','visible','on',...

 'KeyPressFcn','RussiaBlock(''KeyPress_Callback'',gcbo)',...

 'HelpFcn','helpdlg(''帮不了你--!

'',''不好意思'')',...

 'CloseRequestFcn','RussiaBlock(''CloseFigure_Callback'',gcbo)'); 

   

 generate_FigureContent(FigureHandle);

   

 init_FigureContent(FigureHandle);

   

 set(FigureHandle,'Visible','on');

   

elseifischar(varargin{1})

   

 feval(varargin{:

});

   

end

%-------------------------------------------------------------------------

functiongenerate_FigureContent(FigureHandle)

TabSpace=30;

BlockWidth=20;

BlockHeight=20;

FigureWidth=BlockWidth*(12+1)+TabSpace*7;

FigureHeight=500;

set(FigureHandle,'Position',[00FigureWidthFigureHeight]);

movegui(FigureHandle,'center');

%创建菜单

BeginMenu=uimenu(FigureHandle,'Label','开始');

StartMenu=uimenu(BeginMenu,'Label','开始新游戏','Accelerator','N',...

 'Callback','RussiaBlock(''StartNewGame_Callback'',gcbo)');

SaveMenu=uimenu(BeginMenu,'Label','保存','Accelerator','S','Enable','off',...

 'Separator','on','Cal','RussiaBlock(''SaveGame_Callback'',gcbo)');

LoadMenu=uimenu(BeginMenu,'Label','读取','Accelerator','L','Enable','off',...

 'Cal','RussiaBlock(''LoadGame_Callback'',gcbo)');

QuitMenu=uimenu(BeginMenu,'Label','退出','Accelerator','Q','Separator','on','Cal','close(gcf)');

OperationMenu=uimenu(FigureHandle,'Label','功能');

BoardConfigMenu=uimenu(OperationMenu,'label','键盘设置','Enable','off',...

 'Cal','RussiaBlock(''BoardConfig_Callback'',gcbo)');

FigureConfigMenu=uimenu(OperationMenu,'label','界面设置','Enable','off',...

 'Cal','RussiaBlock(''FigureConfig_Callback'',gcbo)');

HighScoreMenu=uimenu(OperationMenu,'label','最高记录','Separator','on',...

 'Cal','RussiaBlock(''HighScore_Callback'',gcbo)','Enable','off');

GameLevelMenu=uimenu(OperationMenu,'Label','游戏难度',...

 'Cal','RussiaBlock(''GameLevel_Callback'',gcbo)');

HelpMenu=uimenu(FigureHandle,'Label','帮助');

AboutMenu=uimenu(HelpMenu,'Label','关于此软件','Cal','helpdlg(''俄罗斯方块MATLAB版'',''关于此软件…………'')');

HelpDlgMenu=uimenu(HelpMenu,'Label','游戏帮助','Separator','on','Cal','helpdlg(''帮不了你--!

'',''不好意思'')');

%创建工具条,图标可以用imread从图片读取,但图片不要太大

BeginTool=uipushtool('ToolTipString','开始','CData',rand(16,16,3),'Tag','BeginTool',...

 'ClickedCallback','RussiaBlock(''StartNewGame_Callback'',gcbo)');

PauseTool=uitoggletool('ToolTipString','暂停','Tag','PauseTool','Tag','PauseTool',...

 'CData',reshape(repmat([110],16,16),[16,16,3]),...

 'ClickedCallback','RussiaBlock(''PauseGame_Callback'',gcbo)');

%创建游戏窗口

MainWindowXPos=TabSpace;

MainWindowYPos=TabSpace;

MainWindowWidth=BlockWidth*12; 

MainWindowHeight=BlockHeight*22;

MainWindowPosition=[MainWindowXPosMainWindowYPosMainWindowWidthMainWindowHeight];

%定义游戏窗口的右键菜单

AxesContextMenu=uicontextmenu('Tag','uicontextmenu');

uimenu(AxesContextMenu,'Label','设置窗口颜色','Cal','RussiaBlock(''WindowColor_Callback'',gcbo)')

uimenu(AxesContextMenu,'Label','设置背景图片','Cal','RussiaBlock(''WindowPicture_Callback'',gcbo)')

uimenu(AxesContextMenu,'Label','设置方块颜色','Cal','RussiaBlock(''BlockColor_Callback'',gcbo)')

uimenu(AxesContextMenu,'Label','恢复默认','Cal','RussiaBlock(''Default_Callback'',gcbo)')

MainAxes=axes('Units','pixels','Pos',MainWindowPosition,'XTick',[],'YTick',[],'XTickLabel',[],...

 'YTickLabel',[],'Box','on','Tag','MainAxes','UicontextMenu',AxesContextMenu,...

 'XLim',[0MainWindowWidth],'YLim',[0MainWindowHeight]);

holdon;

%创建一个窗口用于显示下一个方块的图形

NextBlockWndXPos=MainWindowXPos+MainWindowWidth+TabSpace;

NextBlockWndHeight=4*TabSpace+BlockHeight;

NextBlockWndYPos=MainWindowYPos+MainWindowHeight-NextBlockWndHeight;

NextBlockWndWidth=TabSpace*4+BlockWidth;

NextBlockWndPosition=[NextBlockWndXPosNextBlockWndYPosNextBlockWndWidthNextBlockWndHeight];

NextBlockAxes=axes('Units','pixels','Pos',NextBlockWndPosition,'XTick',[],'YTick',[],...

 'XTickLabel',[],'YTickLabel',[],'XLim',[0NextBlockWndWidth],...

 'YLim',[0NextBlockWndHeight],...

 'Box','on','Tag','NextBlockAxes','Color',[0.850.850.85]);

%创建一组控件,包括(两个文本框用于显示当前方块数和成绩,两个按钮用于暂停和退出)

ButtonTag={'QuitButton','PauseButton','BlockNumText','ScoreText'};

ButtonStyle={'pushbutton','togglebutton','text','text'};

FontColor={[000],[100],[001],[101]};

ButtonColor={[0.70.80.9],[0.310.3],[0.511],[0.511]};

ButtonString={'退出','暂停','方块数','积分'};

ButtonCallback={'close(gcf)','RussiaBlock(''ButtonPauseGame_Callback'',gcbo)','',''};

ButtonNumber=length(ButtonTag);

ButtonWidth=NextBlockWndWidth;

ButtonHeight=50;

ButtonXPos=NextBlockWndXPos;

ButtonYPos=MainWindowYPos+TabSpace;

ButtonPosition=[ButtonXPosButtonYPosButtonWidthButtonHeight];

ButtonTabSpace=(NextBlockWndYPos-2*TabSpace-ButtonHeight*ButtonNumber)/ButtonNumber;

fornum=1:

ButtonNumber

   

 TempButtonPosition=ButtonPosition;

 TempButtonPosition

(2)=ButtonPosition

(2)+(num-1)*(ButtonTabSpace+ButtonHeight);

 iffindstr(ButtonStyle{num},'button')

 TempButtonPosition

(1)=TempButtonPosition

(1)+10;

 TempButtonPosition

(2)=TempButtonPosition

(2)+5;

 TempButtonPosition(3)=TempButtonPosition(3)-10*2;

 TempButtonPosition(4)=TempButtonPosition(4)-5*2;

 else

 TempButtonPosition

(1)=TempButtonPosition

(1)-10;

 TempButtonPosition

(2)=TempButtonPosition

(2)-5;

 TempButtonPosition(3)=TempButtonPosition(3)+10*2;

 TempButtonPosition(4)=TempButtonPosition(4)+5*2;

 end

   

 ButtonHandle=uicontrol('Tag',ButtonTag{num},'Style',ButtonStyle{num},'Pos',TempButtonPosition,...

 'Foregroundcolor',FontColor{num},'Backgroundcolor',ButtonColor{num},...

 'Fontsize',16,'String',ButtonString{num},'Cal',ButtonCallback{num});

   

 iffindstr(ButtonStyle{num},'text')

 set(ButtonHandle,'Max',2);

 end

 iffindstr(ButtonTag{num},'PauseButton')

 set(ButtonHandle,'Enable','inactive','ButtonDownFcn',ButtonCallback{num},'Cal','');

 end

end

MainBlockAxes=axes('Units','pixels','Pos',MainWindowPosition,'XTick',[],'YTick',[],'XTickLabel',[],...

 'YTickLabel',[],'Box','on','Tag','MainBlockAxes','Hittest','off',...

 'XLim',[0MainWindowWidth],'YLim',[0MainWindowHeight],'Color','none');

line('Visible','on','Tag','BlockHandle','Markersize',18,'Parent',MainBlockAxes,'HitTest','off',...

 'Marker','s','MarkerEdgeColor','k','XData',nan,'YData',nan,'LineStyle','none');

line('Visible','off','Tag','TempBlock','Markersize',18,'Parent',MainBlockAxes,'HitTest','off',...

 'Marker','s','MarkerEdgeColor','k','XData',130,'YData',30,'LineStyle','none');

line('Visible','off','Tag','NextBlock','Markersize',18,'Parent',NextBlockAxes,'HitTest','off',...

 'Marker','s','MarkerEdgeColor','k','XData',30,'YData',30,'LineStyle','none');

setappdata(FigureHandle,'XLim',[0MainWindowWidth])

setappdata(FigureHandle,'YLim',[0MainWindowHeight])

handles=guihandles(FigureHandle);

guidata(FigureHandle,handles);

%-------------------------------------------------------------------------

functioninit_FigureContent(FigureHandle)

handles=guidata(FigureHandle);

ColorInfo=[];

try

 ColorInfo=load('ColorInfo.mat');  

catch

   

end

ifisempty(ColorInfo)

 ColorInfo.BlockColor=GetDefaultBlockColor;

 ColorInfo.MainAxesColor=GetDefaultMainAxesColor;

 ColorInfo.MainAxesImage.ImageData=[];

end

set(handles.MainAxes,'Color',ColorInfo.MainAxesColor);

if~isempty(ColorInfo.MainAxesImage.ImageData)

 ImageHandle=image(ColorInfo.MainAxesImage.ImageData,'Parent',handles.MainAxes);

 set(ImageHandle,ColorInfo.MainAxesImage.Property);

 setappdata(FigureHandle,'ImageData',ColorInfo.MainAxesImage.ImageData);

end

set(handles.BlockHandle,'MarkerFaceColor',ColorInfo.BlockColor);

set(handles.TempBlock,'MarkerFaceColor',ColorInfo.BlockColor);

set(handles.NextBlock,'MarkerFaceColor',ColorInfo.BlockColor);

setappdata(FigureHandle,'BlockColor',ColorInfo.BlockColor);

 

%------------------------------------------------------------

functionStartNewGame_Callback(h,StartType)

handles=guidata(h);

globalPauseTime

ifnargin==1

 StartType='NewStart';

 setappdata(handles.RussiaBlock,'BlockNumber',0);

 set(handles.BlockNumText,'String',{'方块数','0'});

   

 setappdata(handles.RussiaBlock,'CurrentScore',0);

 set(handles.ScoreText,'String',{'积分','0'});

   

 set(handles.BlockHandle,'XData',nan,'YData',nan);

 set(handles.TempBlock,'XData',nan,'YData',nan);

   

 TextHandle=findobj('Parent',handles.MainBlockAxes,'Type','text');  

 delete(TextHandle);

else

end

set(handles.NextBlock,'Visible','on');

set(handles.TempBlock,'Visible','on');

set(handles.PauseTool,'State','off');

set(handles.PauseButton,'Value',0);

YLim=get(handles.MainAxes,'YLim');

while(ishandle(h)) 

 TotalYData=get(handles.BlockHandle,'YData');

 ifany(TotalYData>=YLim

(2))

 %Gameover

 text(20,200,'GameOver','Parent',handles.MainBlockAxes,...

 'FontSize',30,'Color','r','FontAngle','ita

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1