matlab各种游戏编程大全-俄罗斯方块-贪吃蛇-拼图-五子棋-黑白棋-华容道等_第1页
matlab各种游戏编程大全-俄罗斯方块-贪吃蛇-拼图-五子棋-黑白棋-华容道等_第2页
matlab各种游戏编程大全-俄罗斯方块-贪吃蛇-拼图-五子棋-黑白棋-华容道等_第3页
matlab各种游戏编程大全-俄罗斯方块-贪吃蛇-拼图-五子棋-黑白棋-华容道等_第4页
matlab各种游戏编程大全-俄罗斯方块-贪吃蛇-拼图-五子棋-黑白棋-华容道等_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、用 matlab编写的俄罗斯方块小游戏function russiablock( varargin ) if nargin = 0 oldhandle = findobj( type, figure, tag, russiablock ) ; if ishandle( oldhandle ) delete( oldhandle ) ; end figurehandle = figure( name, 俄罗斯方块matlab 版, tag, russiablock, numbertitle, off,. menubar, none, doublebuffer, on, resize, off,

2、visible, on,. keypressfcn, russiablock( keypress_callback, gcbo ),. helpfcn, helpdlg(帮不了你 - -!, 不好意思 ),. closerequestfcn, russiablock( closefigure_callback, gcbo ) ) ; generate_figurecontent( figurehandle ) ; init_figurecontent( figurehandle ) ; set( figurehandle, visible, on ) ; elseif ischar( vara

3、rgin1 ) feval( varargin: ) ; end % - function generate_figurecontent( figurehandle ) tabspace = 30 ; blockwidth = 20 ; blockheight = 20 ; figurewidth = blockwidth * (12 + 1) + tabspace * 7; figureheight = 500 ; set( figurehandle, position, 0 0 figurewidth figureheight ) ; movegui( figurehandle, cent

4、er ) ; % 创建菜单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

5、, 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( op

6、erationmenu, 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( h

7、ighscore_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

8、, 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, pau

9、setool, tag, pausetool,. cdata, reshape( repmat( 1 1 0, 16, 16), 16,16,3 ),. clickedcallback, russiablock( pausegame_callback, gcbo ) ) ; % 创建游戏窗口mainwindowxpos = tabspace; mainwindowypos = tabspace; mainwindowwidth = blockwidth * 12 ; mainwindowheight = blockheight * 22 ; mainwindowposition = mainw

10、indowxpos mainwindowypos mainwindowwidth mainwindowheight ; % 定义游戏窗口的右键菜单axescontextmenu = uicontextmenu( tag, uicontextmenu ) ; uimenu( axescontextmenu, label, 设置窗口颜色, cal, russiablock( windowcolor_callback, gcbo ) ) uimenu( axescontextmenu, label, 设置背景图片, cal, russiablock( windowpicture_callback,

11、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, mai

12、naxes, uicontextmenu, axescontextmenu,. xlim, 0 mainwindowwidth, ylim, 0 mainwindowheight ) ; hold on; % 创建一个窗口用于显示下一个方块的图形nextblockwndxpos = mainwindowxpos + mainwindowwidth + tabspace ; nextblockwndheight = 4 * tabspace + blockheight ; nextblockwndypos = mainwindowypos + mainwindowheight - nextblo

13、ckwndheight ; nextblockwndwidth = tabspace * 4 + blockwidth ; nextblockwndposition = nextblockwndxpos nextblockwndypos nextblockwndwidth nextblockwndheight ; nextblockaxes = axes( units, pixels, pos, nextblockwndposition, xtick, , ytick,. xticklabel, , yticklabel, , xlim, 0 nextblockwndwidth,. ylim,

14、 0 nextblockwndheight, . box, on, tag, nextblockaxes, color, 0.85 0.85 0.85 ) ; % 创建一组控件,包括(两个文本框用于显示当前方块数和成绩,两个按钮用于暂停和退出)buttontag = quitbutton, pausebutton, blocknumtext, scoretext ; buttonstyle = pushbutton, togglebutton, text, text ; fontcolor = 0 0 0, 1 0 0, 0 0 1, 1 0 1 ; buttoncolor = 0.7 0.8

15、 0.9, 0.3 1 0.3, 0.5 1 1, 0.5 1 1 ; buttonstring = 退出 , 暂停 , 方块数 , 积分 ; buttoncallback = close(gcf), russiablock( buttonpausegame_callback, gcbo ), , ; buttonnumber = length( buttontag ) ; buttonwidth = nextblockwndwidth ; buttonheight = 50 ; buttonxpos = nextblockwndxpos ; buttonypos = mainwindowyp

16、os + tabspace ; buttonposition = buttonxpos buttonypos buttonwidth buttonheight ; buttontabspace = (nextblockwndypos - 2 * tabspace - buttonheight * buttonnumber) / buttonnumber ; for num = 1: buttonnumber tempbuttonposition = buttonposition ; tempbuttonposition(2) = buttonposition(2) + (num - 1) *

17、(buttontabspace + buttonheight); if findstr( buttonstylenum, button ) tempbuttonposition(1) = tempbuttonposition(1) + 10 ; tempbuttonposition(2) = tempbuttonposition(2) + 5 ; tempbuttonposition(3) = tempbuttonposition(3) - 10 * 2 ; tempbuttonposition(4) = tempbuttonposition(4) - 5 * 2 ; else tempbut

18、tonposition(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, buttontagnum, style, buttonstylenum, pos, tempbuttonpos

19、ition,. foregroundcolor, fontcolornum, backgroundcolor, buttoncolornum,. fontsize, 16, string, buttonstringnum, cal, buttoncallbacknum ) ; if findstr( buttonstylenum, text ) set( buttonhandle, max, 2 ) ; end if findstr( buttontagnum, pausebutton ) set( buttonhandle, enable, inactive, buttondownfcn,

20、buttoncallbacknum, cal, ) ; end end mainblockaxes = axes( units, pixels, pos, mainwindowposition, xtick, , ytick, xticklabel, ,. yticklabel, , box, on, tag, mainblockaxes, hittest, off,. xlim, 0 mainwindowwidth, ylim, 0 mainwindowheight, color, none ) ; line( visible, on, tag, blockhandle, markersiz

21、e, 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, o

22、ff, tag, nextblock, markersize, 18, parent, nextblockaxes, hittest, off,. marker, s, markeredgecolor, k, xdata, 30, ydata, 30, linestyle, none ) ; setappdata( figurehandle, xlim, 0 mainwindowwidth ) setappdata( figurehandle, ylim, 0 mainwindowheight ) handles = guihandles( figurehandle ) ; guidata(

23、figurehandle, handles ) ; % - function init_figurecontent( figurehandle ) handles = guidata( figurehandle ) ; colorinfo = ; try colorinfo = load(colorinfo.mat) ; catch end if isempty( colorinfo ) colorinfo.blockcolor = getdefaultblockcolor ; colorinfo.mainaxescolor = getdefaultmainaxescolor ; colori

24、nfo.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( figure

25、handle, 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, c

26、olorinfo.blockcolor ) ; % - function startnewgame_callback( h, starttype ) handles = guidata( h ) ; global pausetime if nargin = 1 starttype = newstart ; setappdata( handles.russiablock, blocknumber, 0 ) ; set( handles.blocknumtext, string, 方块数 ,0 ) ; setappdata( handles.russiablock, currentscore, 0

27、 ) ; 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( hand

28、les.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 ) ; if any( totalydata = ylim(2) ) % game over text( 20, 200, gameover, parent, hand

29、les.mainblockaxes,. fontsize, 30, color, r, fontangle, italic ) ; break; end if length( totalydata ) = 4 totalxdata = get( handles.blockhandle, xdata ) ; lastblockydata = totalydata( end - 3: end ) ; lastblockydata = unique( lastblockydata ) ; completeline = ; usefulindex = ; for num = 1: length( la

30、stblockydata ) ydata, index = find( totalydata = lastblockydata(num) ) ; if length( ydata ) = 12 completeline = completeline, lastblockydata(num) ; usefulindex = usefulindex, index ; end end if isempty( completeline ) totalxdata( usefulindex ) = ; totalydata( usefulindex ) = ; linenumber = length( c

31、ompleteline ) ; scorearray = 100 300 600 1000 ; newscore = scorearray(linenumber) ; currentscore = getappdata( handles.russiablock, currentscore ) ; textstring = get( handles.scoretext, string ) ; textstring2 = currentscore + newscore ; set( handles.scoretext, string, textstring ) ; setappdata( hand

32、les.russiablock, currentscore, currentscore + newscore ) ; updategamelevel( handles.russiablock, currentscore + newscore ) ; % 处理需要下移的方块for num = linenumber : -1 : 1 ydata, index = find( totalydata lastblockydata(num) ) ; totalydata(index) = totalydata(index) - 20 ; end end set( handles.blockhandle,

33、 xdata, totalxdata, ydata, totalydata ) ; end blocknumber = getappdata( handles.russiablock, blocknumber ) ; textstring = get( handles.blocknumtext, string ) ; textstring2 = blocknumber + 1 ; set( handles.blocknumtext, string, textstring ) ; setappdata( handles.russiablock, blocknumber, blocknumber

34、+ 1 ) ; gamelevel = getappdata( handles.russiablock, gamelevel ) ; if isempty( gamelevel ) pausetime = 0.3 ; else pausetime = ceil( 20 / gamelevel ) / 100 ; end tempblockpos.leftstep = 0 ; tempblockpos.downstep = 0 ; setappdata( handles.russiablock, tempblockpos, tempblockpos ) ; status = 1; blockxa

35、rray,blockyarray = com_getblock( h ) ; set( handles.tempblock, xdata, blockxarray, ydata, blockyarray ) ; while( status & ishandle( h ) ) if(pausetime) = 0 pause( pausetime ) end status = test_moveblock( h, down ) ; end end % - function keypress_callback( h ) handles = guidata( h ) ; pausestate

36、= get( handles.pausetool, state ) ; if strcmp( pausestate, on ) return end boardconfig = getappdata( handles.russiablock, boardconfig ) ; if isempty( boardconfig ) left = leftarrow ; right = rightarrow ; down = downarrow ; change = uparrow ; drop = space ; else left = boardconfig.left ; right = boar

37、dconfig.right ; down = boardconfig.down ; change = boardconfig.change ; drop = boardconfig.drop ; end currentkey = get( handles.russiablock, currentkey ) ; switch currentkey case left test_moveblock( h, left ) ; case right test_moveblock( h, right ) ; case down test_moveblock( h, down ) ; case chang

38、e test_moveblock( h, change ) ; case drop test_moveblock( h, drop ) ; otherwise return ; end % - function windowcolor_callback( h ) handles = guidata( h ) ; currentcolor = get( handles.mainaxes, color ) ; newcolor = uisetcolor( currentcolor, 请选择窗口颜色 ) ; if length( newcolor ) = 0 return; else set( ha

39、ndles.mainaxes, color, newcolor ) ; end % - function windowpicture_callback( h ) handles = guidata( h ) ; picturefile, path = uigetfile( *.jpg; *.bmp,请选择图片 ); if isnumeric( picturefile ) return ; else % if length( picturefile ) 31 % errordlg( 文件名过长 ,读取失败 ) ; % end try picture = imread( path, picture

40、file ) ; for num = 1: size( picture, 3 ) validpicture(:, :, num) = flipud( picture(:,:,num) ) ; end axesxlim = get( handles.mainaxes, xlim ) ; axesylim = get( handles.mainaxes, ylim ) ; blockhandle = findobj( handles.mainaxes, style, line ) ; cla( blockhandle ) ; imagexlimit = size(picture, 2) ; ima

41、geylimit = size(picture, 1) ; if diff( axesxlim ) size(picture, 2) | diff( axesylim ) size(picture, 1) % 超出坐标轴范围,压缩显示xscale = diff( axesxlim ) / size(picture, 2) ; yscale = diff( axesylim ) / size(picture, 1) ; % 取较小比例压缩scale = min( xscale, yscale ) ; imagexlimit = size(picture, 2) * scale ; imageyl

42、imit = size(picture, 1) * scale ; end imagexdata(1) = axesxlim(1) + (diff( axesxlim ) - imagexlimit) / 2 + 1; imagexdata(2) = imagexdata(1) + imagexlimit - 1; imageydata(1) = axesylim(1) + (diff( axesylim ) - imageylimit) / 2 + 1; imageydata(2) = imageydata(1) + imageylimit - 1; image( validpicture,

43、 parent, handles.mainaxes, hittest, off, . xdata,imagexdata,ydata,imageydata, tag, mainimage ); setappdata( handles.russiablock, imagedata, validpicture ) ; catch errorstring = sprintf( 读取图片失败,错误信息为:n,lasterr ) ; errordlg( errorstring ) ; end end % - function blockcolor_callback( h ) handles = guida

44、ta( h ) ; currentcolor = getappdata( handles.russiablock, blockcolor ) ; if isempty( currentcolor ) currentcolor = getdefaultblockcolor ; setappdata( handles.russiablock, blockcolor, currentcolor ) ; end newcolor = uisetcolor( currentcolor, 请选择方块颜色 ) ; if length( newcolor ) = 0 return; else setappda

45、ta( handles.russiablock, blockcolor, newcolor ) ; set( handles.blockhandle, markerfacecolor, newcolor ) ; set( handles.tempblock, markerfacecolor, newcolor ) ; set( handles.nextblock, markerfacecolor, newcolor ) ; end % - function default_callback( h ) handles = guidata( h ) ; blockcolor = getdefaul

46、tblockcolor ; axescolor = getdefaultmainaxescolor ; set( handles.mainaxes, color, axescolor ) ; set( handles.blockhandle, markerfacecolor, blockcolor ) ; set( handles.tempblock, markerfacecolor, blockcolor ) ; set( handles.nextblock, markerfacecolor, blockcolor ) ; % - function pausegame_callback( h

47、 ) handles = guidata( h ) ; toolstart = get( handles.pausetool, state ) ; if strcmp( toolstart, on ) set( handles.pausebutton, value, 1 ) ; waitfor( handles.pausetool, state, off ) ; else set( handles.pausebutton, value, 0 ) ; end % - function buttonpausegame_callback( h ) handles = guidata( h ) ; t

48、ogglebuttonvalue = get( h, value ) ; if togglebuttonvalue = 0 set( h, value, 1 ) ; set( h, string, 继续 ) ; set( handles.pausetool, state, on ) ; waitfor( handles.pausetool, state, off ) ; else set( h, value, 0 ) ; set( h, string, 暂停 ) ; set( handles.pausetool, state, off ) ; set( handles.russiablock,

49、 currentobject, handles.mainaxes ) ; end % - function closefigure_callback( h ) handles = guidata( h ) ; blockcolor = getappdata( handles.russiablock, blockcolor ) ; mainaxescolor = get( handles.mainaxes, color ) ; mainaxesimagehandle = findobj( handles.mainaxes, type, image ) ; if isempty( mainaxes

50、imagehandle ) mainaxesimage.property.tag = get( mainaxesimagehandle, tag ); mainaxesimage.property.hittest = get( mainaxesimagehandle, hittest ); mainaxesimage.property.xdata = get( mainaxesimagehandle, xdata ); mainaxesimage.property.ydata = get( mainaxesimagehandle, ydata ); mainaxesimage.imagedat

51、a = getappdata( handles.russiablock, imagedata ) ; else mainaxesimage.imagedata = ; end save colorinfo.mat blockcolor mainaxescolor mainaxesimage delete( handles.russiablock ) ; % - function color = getdefaultblockcolor color = 0 0 1 ; % - function color = getdefaultmainaxescolor color = 1 1 1 ; % -

52、 function blockxarray, blockyarray = com_getblock( varargin ) global blockindex ; blockxarray = ; blockyarray = ; handles = guidata( varargin1 ) ; if nargin = 1 blockarray = getappdata( handles.russiablock, blockarray ) ; blockindex = ceil( rand(1) * 24 ) ; else % nargin = 2 blockindex = varargin2 ;

53、 end switch(blockindex) case 1,2,3,4 % 方块blockxarray = 0;0;1;1 * 20 - 10 ; blockyarray = 0;1;1;0 * 20 - 10 ; case 5,6 % 竖长条blockxarray = 0;0;0;0 * 20 - 10 ; blockyarray = -1;0;1;2 * 20 - 10 ; case 7,8 % 横长条blockxarray = -1;0;1;2 * 20 - 10 ; blockyarray = 1;1;1;1 * 20 - 10 ; case 9 % 4类 t t1 blockxar

54、ray = -1;0;1;0 * 20 - 10 ; blockyarray = 1;1;1;0 * 20 - 10 ; case 10 % t2 blockxarray = 0;0;1;0 * 20 - 10 ; blockyarray = 2;1;1;0 * 20 - 10 ; case 11 % t3 blockxarray = 0;0;1;-1 * 20 - 10 ; blockyarray = 2;1;1;1 * 20 - 10 ; case 12 % t4 blockxarray = 0;0;0;-1 * 20 - 10 ; blockyarray = 2;1;0;1 * 20 -

55、 10 ; case 13 % 8类 l l1 blockxarray = 0;0;0;1 * 20 - 10 ; blockyarray = 1;0;-1;-1 * 20 - 10 ; case 14 % l2 blockxarray = -1;0;1;1 * 20 - 10 ; blockyarray = 0;0;0;1 * 20 - 10 ; case 15 % l3 blockxarray = -1;0;0;0 * 20 - 10 ; blockyarray = 1;1;0;-1 * 20 - 10 ; case 16 % l4 blockxarray = -1;-1;0;1 * 20

56、 - 10 ; blockyarray = -1;0;0;0 * 20 - 10 ; case 17 % l5 blockxarray = -1;0;0;0 * 20 - 10 ; blockyarray = -1;-1;0;1 * 20 - 10 ; case 18 % l6 blockxarray = -1;-1;0;1 * 20 - 10 ; blockyarray = 1;0;0;0 * 20 - 10 ; case 19 % l7 blockxarray = 0;0;0;1 * 20 - 10 ; blockyarray = -1;0;1;1 * 20 - 10 ; case 20

57、% l8 blockxarray = -1;0;1;1 * 20 - 10 ; blockyarray = 0;0;0;-1 * 20 - 10 ; case 21 22 % 4类 z z1 blockxarray = -1;0;0;1 * 20 - 10 ; blockyarray = 1;1;0;0 * 20 - 10 ; case 23 24 % z2 blockxarray = 0;0;1;1 * 20 - 10 ; blockyarray = -1;0;0;1 * 20 - 10 ; case 25 26 % z3 blockxarray = -1;0;0;1 * 20 - 10 ;

58、 blockyarray = 0;0;1;1 * 20 - 10 ; case 27 28 % z4 blockxarray = 0;0;1;1 * 20 - 10 ; blockyarray = 1;0;0;-1 * 20 - 10 ; end if nargin = 1 newblockarray.blockxarray = blockxarray ; newblockarray.blockyarray = blockyarray ; newblockarray.blockindex = blockindex ; nextaxesxlim = get( handles.nextblocka

59、xes, xlim ) ; nextaxesylim = get( handles.nextblockaxes, ylim ) ; set( handles.nextblock, xdata, blockxarray + 0.5 * diff( nextaxesxlim ) - ceil( sum( blockxarray ) / 4 ) ,. ydata, blockyarray + 0.5 * diff( nextaxesylim ) - ceil( sum( blockyarray ) / 4 ) ) ; setappdata( handles.russiablock, blockarr

60、ay, newblockarray ) ; if isempty( blockarray ) com_getblock( varargin1 ) ; else blockxarray = blockarray.blockxarray ; blockyarray = blockarray.blockyarray ; blockindex = blockarray.blockindex ; end end axesxlim = getappdata( handles.russiablock, xlim ) ; axesylim = getappdata( handles.russiablock, ylim

温馨提示

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

评论

0/150

提交评论