![连连看课程设计_第1页](http://file4.renrendoc.com/view/abcba78b44466ff2db6e0b8fb88b477a/abcba78b44466ff2db6e0b8fb88b477a1.gif)
![连连看课程设计_第2页](http://file4.renrendoc.com/view/abcba78b44466ff2db6e0b8fb88b477a/abcba78b44466ff2db6e0b8fb88b477a2.gif)
![连连看课程设计_第3页](http://file4.renrendoc.com/view/abcba78b44466ff2db6e0b8fb88b477a/abcba78b44466ff2db6e0b8fb88b477a3.gif)
![连连看课程设计_第4页](http://file4.renrendoc.com/view/abcba78b44466ff2db6e0b8fb88b477a/abcba78b44466ff2db6e0b8fb88b477a4.gif)
![连连看课程设计_第5页](http://file4.renrendoc.com/view/abcba78b44466ff2db6e0b8fb88b477a/abcba78b44466ff2db6e0b8fb88b477a5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档第一章 引言背景游戏“连连看”顾名思义就是找出相关联的东西, 这个连连看在网上基本是用在小游戏中,就是找出相同的两样东西,在一定的规则之内可以做为相关联处理。“连连看”的发展经历了从桌面游戏、在线游戏、社交游戏三个过程。游戏“连连看”是源自台湾的桌面小游戏, 自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。 这其中,顾方编写的“阿达连连看”以其精良的制作广受好评, 这也成为顾方“阿达系列软件”的核心产品。 并于2004年,取得了国家版权局的计算机软件著作权登记证书。随着Flash应用的流行,网上出现了多种在线 Flash版本“连连看”。如“水晶连连看”、“果蔬连连看”等,流行的“水晶连连看”以华丽界面吸引了一大批的女性玩家。2008年,随着社交网络的普及和开放平台的兴起,“连连看”被引入了社交网络。“连连看”与个人空间相结合, 被快速的传播,成为一款热门的社交游戏,其中以开发者Jonevey在Manyou 开放平台上推出的“宠物连连看”最为流行。网络小游戏、网页游戏越来越受网民欢迎, 除了玩的方法简单外(不像其他游戏还需要注册下载繁琐过程),很多游戏不乏经典。连连看游戏就是典型。不管走到哪个网页游戏网站,连连看游戏总是排在受玩家欢迎排名的前 5位,休闲、趣味、益智是连连看玩不厌的精华,且不分男女老少、工薪白领,是一款适合大众的经典网络、单机休闲小游戏。随意编辑精品文档游戏《连连看》,只要将相同的两张牌用三根以内的直线连在一起就可以消除,规则简单容易上手。游戏速度节奏快,画面清晰可爱,适合细心的玩家。丰富的道具和公共模式的加入, 增强游戏的竞争性。多样式的地图,使玩家在各个游戏水平都可以寻找到挑战的目标,长期地保持游戏的新鲜感。该游戏由30张不同的图片组成,游戏开始将会出现 30张随机组合的图片,在规则下点击两张相同的图片后图片将会消失。 图片全部消完为游戏成功。游戏还将设置退出,再来一局的按钮,并实现该功能,方便用户进行操作。1.1课程设计内容1)游戏计分功能当消去两个相同的图片后分数将增加100分。2)退出功能该功能有一个“退出”按钮,当按下“退出”按钮后,将直接退出游戏。3)成功完成任务时显示的该功能有,恭喜成功,一个“再来一局”的按钮,当按下“再来一局”按钮后,图片将会重新排列,重新开始游戏。(4)游戏倒计时功能在游戏界面的上方有一个倒计时的进度条, 增加游戏的难度,激发玩家的挑战兴趣。随意编辑精品文档第二章 系统介绍连连看游戏规则1.1游戏基本规则用鼠标左键点击方块,将2个图案相同的方块用连线连接起来, 连接线不多于3根直线,连接后方块就会消失。在规定的时间内将 30张图片全部消除。1.2操作规则选择一个图片用鼠标左键点击, 图片会变色,然后点击另一个同样图片,如果能够连线就成功消失,如果不能连线,第一次选择的图片就会失效, 然后将继随意编辑精品文档续寻找符合规则的图片。1.3胜利和失败把所有的图片成功消除完毕,则认为是本次游戏成功。选择图片时间是有限的,在规定的时间内,若未能将图片全部消除,则失败,提醒是否再来一局。游戏流程图分析流程图分析如下图 2.1所示:随意编辑精品文档开始鼠标点击位置的确定判断是否点击在图片方块?判断是否已选定一个方块?选定第一个方块 选定第二个方块判断是否可以抵消方块?抵消方块消除选定方块的记录结束图2.1游戏流程图随意编辑精品文档此次设计所使用的语言为 Java。主要应用到Swing组件,Java小程序,事件及接口等。这些接口为游戏的制作提供了便捷的条件, 本系统的主要特点就是运用Swing组件和事件处理技术,进行界面的绘制,鼠标的操作,以及积分的显示等功能。这次通过连连看的设计开发将对理解 Swing组件技术以及事件处理技术在游戏方面的应用起到很大的帮助作用,同时为掌握 Java编程技术及二维休闲游戏设计的一般方法打下坚实的基础。游戏程序设计一般都采用面向对象的设计模式, 提供了一个简单的图像显示接口,利用多文档视图结构的面向对象设计模式。随意编辑精品文档第三章 系统游戏设计系统分析1.1游戏系统需求分析主要设计目标:使用GUI设计连连看,载入图片信息,进行正确分析系统的功能,总载入张图片,且图片信息成对出现,且可以偶数项删除,并具有计时等功能游戏中将有“退出”功能,选择退出命令后程序将终止执行,关闭窗口。还将有“再来一局”功能,选择再来一局命令后程序将对图片重新排列,重新开始游戏。该游戏还有一个时间倒计时的进度条,提醒玩家剩余的时间,增加游戏的难度。在界面的顶部有计分功能,当玩家消去图片后就会赢得相应的分数。1.2系统开发及运行环境硬件平台:本游戏对硬件要求较低,基本都可以正常运行。软件平台:操作系统:Windows 系列。开发工具包:。随意编辑精品文档1.3系统功能主要要求1.系统采用图片连连看方式 .界面美观,用户使用灵活,方便快捷.2.计分自动完成,提高工作效率。3.用进度条进行游戏界面的计时功能。4.可方便快捷地进行下一盘游戏, 并且两盘的分数在规定的时间内会叠加起来。5.操作员可以随时退出游戏。6.对用户输入的信息,系统进行严格的信息检验,尽可能排除人为的错误。7.系统最大限度地实现了易维护性和易操作性。8.系统运行稳定、安全可靠。系统总体结构连连看是基于java基本知识设置的一个小游戏,最中间有连连看的主体构成——连连看图片,上面有计分、时间条,下面有退出、再来一局按键。一个标准的连连看系统应该包括以下几大功结构:1、鼠标操作模块;2、图像处理模块;3、菜单模块;4、显示模块。系统各模块功能介绍系统各功能模块实现的功能为鼠标操作模块:玩家在玩游戏时需要运用鼠标与游戏系统进行交互, 这个模随意编辑精品文档块的实现 是运用鼠标事件触发的,在连连看的游戏场景中运用鼠标进行交互的事件主要有两个,一个 是用户点击游戏场景中的图片时触发的事件。另外一种是用户点击菜单栏上的菜单按钮时说 触发的鼠标事件。当用户点击游戏场景中的图像块时就会响应鼠标的 OnLButtonDown 事件,然后进行相应的逻辑判断。当用户点击菜单栏上的菜单命令时就会触发相应的菜单命令对应的相应的事件。图像处理模块:程序运行后,用户通过游戏菜单的开始命令进入游戏,在这个模块里要把资源文件中的图片进行处理然后加载到游戏场景中这在程序中是通过DrawMap() 方法实现的。其中用到的 API函数主要是是BitBlt,他的主要功能是将某一内存块的数据传送到另一内存块, 前一内存块被称为"源",后一内存块被称为"目标"图象程序开发者使用 Blit的函数在内存中将某页面上的一幅位图经过一定的变换转移到另一个页面上。菜单模块:玩家在游戏游戏过程中随时可以通过选择不同的菜单命令来进行相应的操作,菜单的制作是通过 MFC框架中多文档程序的菜单栏来添加的,菜单包含一下几个部分:(1)游戏菜单中的开始、放弃和退出命令。界面显示模块:游戏场景中界面的显示包括以下部分: 游戏计分,剩余时间、游戏主场景,游戏完成提示界面。这些显示信息会随着游戏的进行而动态改变。在连连看游戏中。整个连连看游戏的系统是在 VC++6.0 开发环境中进行开发的,开发过程中大量的使用了微软提供的 API接口方法,减少了程序代码的编写量、提高了编程效率。随意编辑精品文档第四章 系统的具体实现系统主要运行界面1.1运行界面运行界面如下图4.1所示:图4.1运行界面1.2执行界面,进入游戏正常运行执行界面如下图4.2所示:随意编辑精品文档图4.2执行界面1.3时间到界面时间到界面如下图 4.3所示:随意编辑精品文档图4.3时间到界面1.4赢家界面游戏运行成功界面如下图 4.4所示:图4.4游戏运行成功界面随意编辑精品文档1.5进度条界面程序运行进度条如下图 4.5所示:图4.5程序运行进度条游戏实现代码2.1主面板内所需要的组件的声明主面板内所需要的组件的声明代码如下图 4.6所示:图4.6组件声明2.2填充一个矩形框,进行显示时间填充一个矩形框,进行显示时间代码如下图 4.7所示:随意编辑精品文档图4.7填充矩形框显示时间2.3主面板及各组件初始化主面板及各组件初始化如下图 4.8所示:图4.8主面板及各组件初始化2.4创建时间对象,每隔 100毫秒刷新一次创建时间对象,每隔 100毫秒刷新一次代码如下图 4.9所示:图4.9创建时间对象随意编辑精品文档2.5分数代码。每消除一对图片,则分数加上 100。代码如下图4.10所示:图4.10 分数代码消除图片具体情况当点击两个按钮的图片一样时, 运用消去算法来判断是否可消去, 具体情况如下:3.1两次点击相同图片相邻当两次点击的相同图片相邻时 ,如下图4.11所示,则消去。图4.11 点击图片相邻3.2水平方向消去算法当两次点击的相同图片如下图 4.12所示,则在水平方向用循环算法 for(j=随意编辑精品文档0;j<7;j++) 判断,设第一次选中按钮坐标为 x0,y0,第二次选中按钮坐标为 x,y,则先找到grid(x0,j)为0的j,再判断x水平方向x到j是否grid(x,j)都为0,若是则判断x0水平方向x0到j是否grid(x0,j)都为0,若是,则再判断x和x0,若相等消去,若不等判断在 j竖直方向上是否 grid(n,j)(n为x到x0之间的数)都为 0,若是则消去。图4.12水平消去算法图片3.3竖直方向消去算法竖直方向消去算法。情况与水平方向基本相同,重点提一下图片4.13所示的情况,其余情况不再重复描述。出现下图情况则会消去,消去原理与水平方向消去算法相似。图4.13竖直消去算法图片随意编辑精品文档第五章 程序清单packagec02; cnt,0,cnt,this.getHeight());// 填充一个 矩形区域 }import publicbooleanisEnd(){ if(cnt++> this.getWidth()) returntrue;classMyPanelextendsJPanel{ repaint();intcnt=0; returnfalse;publicvoidpaint(Graphicsg){ }super.paint(g); }g.setColor(Color.red); publicclassLianLianKang.fillRect(this.getWidth()- implementsActionListener{随意编辑精品文档JFramemainFrame;// 主面板 inti,j,k,n;// 消除方法控制MyPaneltime; //============= 调用图片JPanelcenterPanel,southPanel, ================//northPanel;//3 个子面板 privatestaticIconicons[]=JButtondiamondsButton[][]= newImageIcon[6*5]; //静态数组iconsnewJButton[6][5];// 游戏按钮数组 【】用于存放图片绝对地址JButtonexitButton, privatestaticfinalStringnewlyButton;// 退出,重新开始按钮 imgDir="f:/meng";JLabelscoreLable;// 分数标签 static{JButtonfirstButton, trysecondButton;// 分别记录两次被选中的 {按钮 Filedir=newTimertimer; File(imgDir);intgrid[][]=newint[8][7];// 储 File[]imgFiles=存游戏按钮位置 dir.listFiles(newFilenameFilter(){ //获staticboolean 取f:/meng 文件中的图片pressInformation=false;// 判断是否有 publicboolean按钮被选中 accept(Filedir,Stringname){intsum=0; returnintx0=0,y0=0,x=0,y=0, name.toLowerCase().endsWith(".jpg");fristMsg=0,secondMsg=0;// 游戏按 }钮的位置坐标 });随意编辑精品文档for(inti=0;i<6*5;体所在的应用程序i++){//获取f:/meng文件mainFrame.setLayout(new中的图片的绝对路径放在icons数组中BorderLayout());//设置为icons[i]=newBorderLayout()布局ImageIcon(imgFiles[i].getAbsolutePathscoreLable=new());JLabel("0");//centerPanel=newSystem.out.println(i+""+icons[i]);JPanel();//设置面板}southPanel=newJPanel();}catch(Exceptione){northPanel=newJPanel();e.printStackTrace();//northPanel.setLayout(new异常处理BorderLayout());//设置时间分数面板布}局为边界布局}publicvoidinit()mainFrame.add(centerPanel,{//初始化面板"Center");//添加组件mainFrame=newJFrame("JKJ连连看");//设置主面板的名mainFrame.add(southPanel,称为"JKJ连连看""South");mainFrame.setDefaultCloseOperati mainFrame.add(northPanel,on(JFrame.EXIT_ON_CLOSE);// 结束窗 "North");随意编辑精品文档centerPanel.setLayout(new }GridLayout(6,5));// 设置一个 6*5的网格 exitButton=new布局 JButton(" 退出");// 退出按钮for(intcols=0;cols<6;cols++){ exitButton.addActionListener(this);for(introws=0;rows newlyButton=new<5;rows++){ JButton(" 再来一局");// 再来一局按钮//=========== 设置图片 newlyButton.addActionListener(thi=============// s);diamondsButton[cols][rows]=new southPanel.add(exitButton);// 添加JButton( 退出按钮icons[grid[cols+1][rows+1]]); southPanel.add(newlyButton);// 添加再来一局按钮diamondsButton[cols][rows].addAcscoreLable.setText(String.valueOf(ItionListener(this);nteger.parseInt(scoreLable.getText())));centerPanel.add(diamondsButton[time=newMyPanel();cols][rows]);northPanel.add(time,}随意编辑精品文档BorderLayout.CENTER); //时间-分数 就是icon【】下标+1)面板上在CENTER位置添加时间 {northPanel.add(scoreLable, intrandoms,cols,rows;//BorderLayout.WEST); //时间-分数面板 变量定义上在WEST位置添加分数 Lable for(inttwins=1;twins<=mainFrame.setSize(500, 15;twins++){450); // 设置主面板的大小 randoms=(int)(Math.random()*24);mainFrame.setLocationRelativeTo( for(intalike=1;alikenull); //设置窗口在屏幕中间显示 <=2;alike++){cols=(int)mainFrame.setVisible(true);// 设置 (Math.random()*6+1);窗口可见 rows=(int)} (Math.random()*5+1);publicvoidstartt(){ whiletimer=newTimer(10,this); (grid[cols][rows]!=0){//创建时间对象,每隔 100毫秒计时一次。 cols=(int)init(); (Math.random()*6+1);timer.start(); rows=(int)} (Math.random()*5+1);publicvoidrandomBuild()// 初 }始化存放游戏按钮位置的 grid[][] 数组(也随意编辑精品文档this.grid[cols][rows]=randoms; if(this.grid[i][ j]!=0){}save[n]=}this.grid[i][j];}n++;publicvoidscore()// 方法声明}{}}scoreLable.setText(String.valueOf(In=n-1;nteger.parseInt(scoreLablethis.grid=grid;//this 出现.getText())+100));在实例方法中,表示使用该方法的当前对象}while(n>=0)//while 循环publicvoidreload()// 方法声明{{cols=(int)intsave[]=newint[30];//(Math.random()*6+1);创建声明数组rows=(int)intn=0,cols,rows;// 变(Math.random()*5+1);量定义whileintgrid[][]=newint[8][7];(grid[cols][rows]!=0)// 循环嵌套创建声明数组{for(inti=0;i<=6;i++){cols=(int)for(intj=0;j<=5;(Math.random()*6+1);j++){随意编辑精品文档rows=(int)(Math.random()*5+1); diamondsButton[i][j].setVisible(fals} e);// 窗口不可见this.grid[cols][rows]= }save[n];//this 出现在实例方法中, 表示使 }用该方法的当前对象 }n--;publicvoidestimateEven(int}placeX,intplaceY,JButtonbz)// 点击按钮触发mainFrame.setVisible(false);// 窗口{不可见if(pressInformation==pressInformation=false;false)// 选择语句// 这里一定要将按钮点击信息归为初始{init();x=placeX;for(inti=0;i<6;i++)//y=placeY;for循环secondMsg={grid[x][y];for(intj=0;j<5;secondButton=bz;j++)// 循环嵌套pressInformation={true;if(grid[i+1][j+1]}else{==0)x0=x;随意编辑精品文档y0=y; ||(y0==y)&&fristMsg= ((x0==x+1||x0==x-1))) // 判断secondMsg; 是否相邻firstButton= {secondButton; remove();x=placeX; }else{y=placeY; for(j=0;j<7;j++){secondMsg= if(grid[x0][j]==grid[x][y]; 0)// 判断第一个按钮同行哪个按钮为空secondButton=bz; {if(fristMsg== if(y>j)// 如secondMsg&&secondButton!= 果第二个按钮的 Y坐标大于空按钮的 Y坐标firstButton){ // 相同的情况下能不能 说明第一按钮在第二按钮左边消去。 {xiao(); for(i=y-} 1;i>=j;i--)// 判断第二按钮左侧直到第} 一按钮中间有没有按钮} {ifpublicvoidxiao()(grid[x][i]!=0){{kif((x0==x&&(y0==y+=0;1||y0==y-1))随意编辑精品文档{break; if}else (grid[x][i]!=0){{ kk =0;=1;}// break;K=1说明通过了第一次验证 }else} {if(k==1) k{ =1;}linePassOne(); }} if(k==1)} {if(y<j)// 如果第二个按钮的 Y坐标小于空按钮的 Y坐标 linePassOne();说明第一按钮在第二按钮右边 }{ }for(i=y if(y==j){+1;i<=j;i++)// 判断第二按钮左侧直到第一按钮中间有没有按钮 linePassOne();随意编辑精品文档} }} if(x0>x){if(k==2){ for(n=if(x0==x){ x0;n>=x+1;n--){remove(); if} (grid[n][ j]!=0){if(x0<x){ kfor(n= =0;x0;n<=x-1;n++){if break;(grid[n][ j]!=0){ }k if=0; (grid[n][ j]==0&&n==x+1){break; remove();} }if }(grid[n][ j]==0&&n==x-1){ }}remove(); }} for(i=0;i<8;i++)//} 列随意编辑精品文档{ }if(grid[i][y0]==0) }{ if(x<i){if(x>i){ for(j=xfor(j=x +1;j<=i;j++){-1;j>=i;j--){ ifif (grid[ j][y]!=0){(grid[j][y]!=0){ kk =0;=0;break;break; }else}else {{ kk =1;=1; }} }} if(k==1)if(k==1) {{rowPassOne();rowPassOne(); }随意编辑精品文档}if(x==i){ remove();}rowPassOne();
}}}if(k==2){if(y0==y){remove();}if(y0<y){for(n=
y0;n>=y+1;n--){(grid[i][n]!=0){=0;
}if(y0>y){for(n=ifky0;n<=y-1;n++){if break;(grid[i][n]!=0){ }k if=0; (grid[i][n]==0&&n==y+1){break; remove();} }if }(grid[i][n]==0&&n==y-1){ }随意编辑精品文档} if(y0<j)// 第一按钮同行空} 按钮在与第二按钮之间} {} for(i=y0+1;i<=j;publicvoidlinePassOne(){ i++){if(y0>j)// 第一按钮同行空 if(grid[x0][i]!=0)按钮在左边 {{ k=0;for(i=y0-1;i>=j; break;i--)// 判断第一按钮同左侧空按钮之间有 }else{没按钮 k=2;{ }if(grid[x0][i]!=0) }{ }k=0; }break; publicvoidrowPassOne(){}else{ if(x0>i){k=2; for(j=x0-1;j>=i;}//K=2 说明通过 j--){了第二次验证 if(grid[j][y0]!=0)} {} k=0;随意编辑精品文档break; grid[x][y]!=0)}else{ {k=2;} firstButton.setVisible(false);// 不可} 见}if(x0<i){ secondButton.setVisible(false);for(j=x0+1;j<=i; score();j++){ //分数加100if(grid[j][y0]!=0) pressInformation={ false;k=0; grid[x0][y0]=0;break; grid[x][y]=0;}else{ sum++;k=2; if(sum==15)} {} timer.stop();} if} (JOptionPane.showConfirmDialog(maipublicvoidremove(){ //消除 nFrame,两个按钮 "恭喜你,你赢if(grid[x0][y0]!=0&& 了! 想再来一局吗? ","胜利",随意编辑精品文档publicvoidJOptionPane.YES_NO_OPTION)==actionPerformed(ActionEvente){ //JOptionPane.OK_OPTION){接口实现intgrid[][]=newif(e.getSource()==int[8][7];newlyButton){this.grid=grid;intgrid[][]=newrandomBuild();int[8][7];// 创建数组this.grid=grid;mainFrame.setVisible(false);// 窗口randomBuild();不可见pressInformationmainFrame.setVisible(false);// 窗口=false;不可见init();pressInformation=timer.start();// 启动 false;线程 init();sum=0; timer.start();}else sum=0;System.exit(0); }if(e.getSource()==}exitButton)}System.exit(0);}if(e.getSource()==timer)随意编辑精品文档{if(time.isEnd()){ pressInformation=false;timer.stop();// 时间init();到的提示if timer.start();//(JOptionPane.showConfirmDialog(mai 启动线程nFrame, sum=0;"时间到 }else了,o(︶︿︶)o\n 要再来一局吗? ","提示", System.exit(0);}JOptionPane.YES_NO_OPTION)== }JOptionPane.OK_OPTION){ for(intcols=0;cols<6;intgrid[][]= cols++){newint[8][7]; for(introws=0;rowsthis.grid= <5;rows++){grid; if(e.getSource()==diamondsButton[cols][rows]){randomBuild();estimateEven(cols+1,rows+1,mainFrame.setVisible(false);// 窗口 diamondsButton[cols][rows]);不可见 }随意编辑精品文档} LianLianKan();// 创建对象} llk.randomBuild();// 调用方} 法publicstaticvoidmain(String[] llk.startt();args){// 主函数 }LianLianKanllk=new }第六章 结束语本次java课程设计,通过一学期的学习知识,成功的设计出一个非常经典的连连看小游戏,参考网络上的知识,进行扩展知识面,本节只要了解了图形界面的概念,及其应用到实际界面中,深刻的了解了AWT得基本体系结构,SWING组件的功能,Swing组件从功能上分为三种类型 :顶级组件,中间组件和基本组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电商平台商家与消费者权益保障交易协议
- 建议书合同投资建议书
- 有关工程安装合同
- 设备工程安装合同
- 大数据产业应用研究合作合同
- 保利花园物业管理服务协议
- 网站安全维护协议
- 交通协管员聘用合同
- 酒店连锁经营管理授权协议
- 培训技术服务合同
- 科幻小说赏读智慧树知到答案章节测试2023年杭州师范大学
- 《足球:脚背内侧传球》说课课件
- 高中生物 人教版 选修二《生态系统及其稳定性》 《生态系统及其稳定性》单元教学设计
- 公司设备日点检表模板
- (新版)金属冶炼(铅、锌冶炼)主要负责人考试题库(含答案)
- 创新创业基础(杨卫军)第九章 新创企业管理
- GA/T 1920-2021法庭科学疑似毒品中211种麻醉药品和精神药品检验气相色谱-质谱法
- GB/T 21260-2007汽车用前照灯清洗器
- 儿科重症监护病房管理演示文稿
- 优质护理与人文关怀课件
- 九年级班主任开学第一课设计课件
评论
0/150
提交评论