韩顺平_轻松搞定网页设计(html+css+javascript)_第34讲_js超级玛丽小游戏_学习笔记_源代码图解_PPT文档整理

采用面向对象思想设计超级马里奥游戏人物(示意图)

怎么用通过按键,来控制图片的位置
这个小游戏,用面向对象会很方便,不用面向对象会很麻烦很麻烦,比如以后要讲解的坦克大战的游戏,要是用纯的面向过程或函数式的方式写,那维护起来会非常的麻烦。

游戏分析:
(1)看看如何通过按钮来控制mario的位置
(2)设计相关的对象(Mario x y ...)
Event对象
onclick属性:当用户点击某个对象时调用的事件句柄

素材

mario.css

  1. .gamediv{
  2. width: 500px;
  3. height: 400px;
  4. pink;
  5. }
  6. /*表格样式*/
  7. .controlcenter{
  8. width: 200px;
  9. height: 200px;
  10. border: 1px solid red;
  11. }
.gamediv{
width: 500px;
height: 400px;
background-color: pink;
} /*表格样式*/
.controlcenter{
width: 200px;
height: 200px;
border: 1px solid red;
}

mario.html

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html>
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  4. <link rel="stylesheet" type="text/css" href="mario.css" />
  5. <head>
  6. <script language="javascript">
  7. //设计Mario类
  8. function Mario(){
  9. this.x=0;
  10. this.y=0;
  11. //移动 顺时针 0->上 1->右 2->下 3->左
  12. this.move=function(direct){
  13. switch(direct){
  14. case 1:
  15. //window.alert("mario 右移动");
  16. //这里为了改变 img的left 和top,我们需要得到 img元素。需要用到javascript的DOM编程。img 对象
  17. var mymario=document.getElementById('mymario');
  18. //取出 img 的top值
  19. //window.alert(mymario.style.top);
  20. //怎样去掉50px的px
  21. var top=mymario.style.top;
  22. //px占据两个,即lenght-2
  23. //window.alert(top.substr(0,top.length-2));
  24. //现在还是串,要转成数值才能加减
  25. top=parseInt(top.substr(0,top.length-2));
  26. //window.alert(top);
  27. mymario.style.top=(top+2)+"px"; //开始移动2px,看怎么拼接的,字符串和数值之间的转换
  28. //此时mario就可以向下移动了,把上面的打印调试输出代码都注释掉
  29. break;
  30. }
  31. }
  32. }
  33. //创建Mario对象
  34. var mario=new Mario();
  35. //全局函数
  36. function marioMove(direct){
  37. switch(direct){
  38. case 1:
  39. mario.move(direct);
  40. break;
  41. case 0:
  42. break;
  43. case 2:
  44. break;
  45. case 3:
  46. break;
  47. }
  48. }
  49. </script>
  50. </head>
  51. <body>
  52. <div class="gamediv">
  53. <img id="mymario" src="mario.jpg" style="left:100px; top:50px; position:absolute;" /> <!--用到了绝对定位-->
  54. </div>
  55. <table border="1px" class="controlcenter">
  56. <tr>
  57. <td colspan="3">游戏键盘</td>
  58. </tr>
  59. <tr>
  60. <td>**</td>
  61. <td><input type="button" value="↑↑" onclick="marioMove(1)" /></td>
  62. <td>**</td>
  63. </tr>
  64. <tr>
  65. <td><input type="button" value="←←" /></td>
  66. <td>**</td>
  67. <td><input type="button" value="→→" /></td>
  68. </tr>
  69. <tr>
  70. <td>**</td>
  71. <td><input type="button" value="↓↓" /></td>
  72. <td>**</td>
  73. </tr>
  74. </table>
  75. </body>
  76. </html>


再要求:
(1)mario碰到边界给一个提示

例子:js超级玛丽小游戏的更多相关文章

  1. Creator仿超级玛丽小游戏源码分享

    Creator仿超级玛丽小游戏源码分享 之前用Cocos Creator 做的一款仿超级玛丽的游戏,使用的版本为14.2 ,可以直接打包为APK,现在毕设已经完成,游戏分享出来,大家一起学习进步.特别 ...

  2. pixi.js 微信小游戏 入手

    pixi是什么?一款h5游戏引擎 优点:简单简洁性能第一 缺点:大多数用的国产三大引擎,pixi资料少,工具少, 为什么学,装逼 用pixi开发小游戏行吗? 行.但要简单处理下 下载官网上的 weap ...

  3. JS写小游戏(一):游戏框架

    前言 前一阵发现一个不错的网站,都是一些用html5+css+js写的小游戏,于是打算学习一番,写下这个系列博客主要是为了加深理解,当然也有一些个人感悟,如果英文好可以直接Click Here. 概述 ...

  4. three.js 微信小游戏

    最近在 https://classroom.udacity.com/courses/cs291 学习了一些 3D 引擎和 three.js 的知识 把 three.js 弄到微信小游戏里,先随便跑一跑 ...

  5. js消除小游戏(极简版)

    js小游戏极简版 (1) 基础布局 <div class = "box"> <p></p> <div class="div&qu ...

  6. JS扫雷小游戏

    HTML代码 <title> 扫雷 </title> <!-- ondragstart:防拖拽生成新页面 oncontextmenu:屏蔽右键菜单--> <b ...

  7. 使用JS制作小游戏贪吃蛇

    先看效果图: 过程如下: 1.首先创建一张画布地图<div class="map"> </div>: 2.创建食物的自调用函数 (function (){ ...

  8. 用原生js写小游戏--Flappy Bird

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. js石头剪刀布小游戏

    代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title ...

随机推荐

  1. Angular自定义组件实现数据双向数据绑定

    学过Angular的同学都知道,输入框通过[(ngModel)]实现双向数据绑定,那么自定义组件能不能实现双向数据绑定呢?答案是肯定的. Angular中,我们常常需要通过方括号[]和圆括号()实现组 ...

  2. Unity3d的模型自动导入帧数表

    开发中经常需要,对美术模型进行一些处理.(以fbx为例) 例如,需要把动作的名字.start和end加入animations的clips. 如果手动操作,就是在模型的Inspector窗口,一个动作点 ...

  3. 基于maven的ssm框架整合

    基于maven的ssm框架整合 第一步:通过maven建立一个web项目.                第二步:pom文件导入jar包                              (1 ...

  4. Pyhton爬虫实战 - 抓取BOSS直聘职位描述 和 数据清洗

    Pyhton爬虫实战 - 抓取BOSS直聘职位描述 和 数据清洗 零.致谢 感谢BOSS直聘相对权威的招聘信息,使本人有了这次比较有意思的研究之旅. 由于爬虫持续爬取 www.zhipin.com 网 ...

  5. otter双A同步配置

    otter双A配置 最近做跨国服务器的数据同步,用了阿里的otter开源框架,遇到了不少问题,写一下文档为以后做参考. 第一步: 下载所需的文件 :otter,zookeeper,aria2 otte ...

  6. CORS预检请求详谈

    引言 最近在项目中因前后端部署不同地方,前端在请求后端api时发生了跨域请求,我们采用CORS(跨域资源共享)来解决跨域请求,这需要前后端的配合来完成.在这一过程中,后端支持了CORS跨域请求后,前端 ...

  7. python的简介及入门

    前言 为何使用Python Python 是一种效率极高的语言.与其他众多的语言相比,实现相同功能,使用Python编写的程序包含的代码更少.Python的语法简单,易上手,使用Python编写的代码 ...

  8. Android IntentService的使用和源码分析

    引言 Service服务是Android四大组件之一,在Android中有着举足重轻的作用.Service服务是工作的UI线程中,当你的应用需要下载一个文件或者播放音乐等长期处于后台工作而有没有UI界 ...

  9. php两个问号??表示什么意思,PHP两个问号运算符,双问号表达式

    有同学给子恒老师留言, 说在php源代码中看到有两个问号?? 不知道是什么意思. 其实两个问题??是php7新推出的表达式, c = a ?? b; 表示如果a非空,则c = a, 如果a为空,则 c ...

  10. C语言可变长參数实现原理

    微博:http://weibo.com/u/2203007022             (1)      C语言可变參数 我们能够从C语言的printf得出可变參数的作用.printf函数的原型例如 ...