吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4199|回复: 12
收起左侧

[会员申请] 申请会员ID:Domineering丶【冒充他人作品申请】

[复制链接]
吾爱游客  发表于 2014-10-22 19:13
1、申 请 I D:Domineering丶
2、个人邮箱:
1109079622@qq.com
3、一篇原创技术文章:
先来一句废话:上次没有通过,这次我会加倍努力,我就是这么执着不要羡慕我!
好了,现在开始正文。
我这次编用html5编写了一个坦克大战的游戏,因为时间关系,我只做了一小部分,现在把它拿出来申请会员用
因为我是一天写一点,所以有的地方可能不太连贯。勿喷....
这次我编写的坦克大战,全部使用绘图技术完成,(都是画出的)+javascript的oop设计.
①首先画出我们的坦克
tankGame1.html有了
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<h1>hmtl5-经典的坦克大战</h1>
<!--坦克大战的战场-->
<canvas id="tankMap" width="400px" height="300px" style="background-color:black"></canvas>
<script type="text/javascript">

//得到画布
var canvas1=document.getElementById("tankMap");
//得到绘图上下文(你可以理解是画笔)
var cxt=canvas1.getContext("2d");

//我的坦克 hero
var heroX=130;
var heroY=230;
//画出自己的坦克,使用前面的绘图技术
//设置颜色
cxt.fillStyle="#DED284";
//使用 先死--->后活
//先画出左面的矩形
cxt.fillRect(heroX,heroY,5,30);
//画出右边的矩形(这时请大家思路->一定要一个参照点)
cxt.fillRect(heroX+15,heroY,5,30);
//画出中间矩形
cxt.fillRect(heroX+6,heroY+5,8,20);
//画出坦克的盖子
cxt.fillStyle="#FFD972";
cxt.arc(heroX+10,heroY+15,4,0,360,true);
cxt.fill();
//画出炮筒(直线)
cxt.strokeStyle="#FFD972";
//设置线条的宽度
cxt.lineWidth=2;
cxt.beginPath();
cxt.moveTo(heroX+10,heroY+15);
cxt.lineTo(heroX+10,heroY);
cxt.closePath();
cxt.stroke();

</script>
</body>
</html>
② 让坦克可以上下左右移动
关于js 的变量范围
//如果你在函数中,没有定义就直接使用变量,就意味你使用的全局变量
//如果你在函数中, 定义了 才使用该变量,说明使用的局部变量

var a=40;
function test(){
  var a=0;
  a=89;
}
test();
alert(a);

②让坦克可以任意移动
代码: tankGame2.html
坦克规定
方向 0 表示 上
方向 1 表示 右
方向 2 表示 下  
方向 3 表示 左
方向要实时变化
tankGame2.html -&#61664;  把 这个页面的  类和函数放到单独的js中
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<h1>hmtl5-经典的坦克大战</h1>
<!--坦克大战的战场-->
<canvas id="tankMap" width="400px" height="300px" style="background-color:black"></canvas>
<!--把tankGames.js引入到本页面-->
<script type="text/javascript" src="tankGame2.js"></script>
<script type="text/javascript">
//得到画布
var canvas1=document.getElementById("tankMap");
//得到绘图上下文(你可以理解是画笔)
var cxt=canvas1.getContext("2d");

//我的坦克 hero
//方向
var hero=new Hero(140,140,0);

drawTank(hero);
//这是一个接受用户按键函数
function getCommand(){
  
  //我怎么知道,玩家按下的是什么键
  //说明当按下键后 事件--->event对象----->事件处理函数()
  var code=event.keyCode;//对应字母的ascii码->我们看码表
  
  switch(code){
   case 87://上
    hero.moveUp();
   
      break;
   case 68:
   
     hero.moveRight();
      break;
    case 83:
   
    hero.moveDown();
    break;
   case 65:
    hero.moveLeft();
    break;
  }
  //把画布清理
  cxt.clearRect(0,0,400,300);
  //重新绘制
  drawTank(hero);
}

</script>
</body>
</html>
tankGame2.js
//定义一个Hero类
//x 表示坦克的 横坐标, y 表示纵坐标, direct 方向
function Hero(x,y,direct){

  this.x=x;
  this.y=y;
  this.speed=1;
  this.direct=direct;
  //上移
  this.moveUp=function(){
   this.y-=this.speed;
   this.direct=0;
  }
  //向右
  this.moveRight=function(){
   this.x+=this.speed;
   this.direct=1;
  }
  //下移
  this.moveDown=function(){
   this.y+=this.speed;
   this.direct=2;
  }
  //左
  this.moveLeft=function(){
   this.x-=this.speed;
   this.direct=3;
  }
}

//绘制坦克
function drawTank(tank){

  //考虑方向
  switch(tank.direct){
  case 0: //上
  case 2:// 下
   //画出自己的坦克,使用前面的绘图技术
   //设置颜色
   cxt.fillStyle="#BA9658";
   //我使用 先死--->后活
   //先画出左面的矩形
   cxt.fillRect(tank.x,tank.y,5,30);
   //画出右边的矩形
   cxt.fillRect(tank.x+15,tank.y,5,30);
   //画出中间矩形
   cxt.fillRect(tank.x+6,tank.y+5,8,20);
   //画出坦克的盖子
   cxt.fillStyle="#FEF26E";
   cxt.arc(tank.x+10,tank.y+15,4,0,360,true);
   cxt.fill();
   //画出炮筒(直线)
   cxt.strokeStyle="#FEF26E";
   //设置线条的宽度
   cxt.lineWidth=1.5;
   cxt.beginPath();
   cxt.moveTo(tank.x+10,tank.y+15);
   
   if(tank.direct==0){
   cxt.lineTo(tank.x+10,tank.y);
   }else if(tank.direct==2){
   cxt.lineTo(tank.x+10,tank.y+30);
   }
   cxt.closePath();
   cxt.stroke();
   break;
  case 1: //右和左
  case 3:
   //画出自己的坦克,使用前面的绘图技术
   //设置颜色
   cxt.fillStyle="#BA9658";
   //我使用 先死--->后活
   //先画出左面的矩形
   cxt.fillRect(tank.x,tank.y,30,5);
   //画出右边的矩形
   cxt.fillRect(tank.x,tank.y+15,30,5);
   //画出中间矩形
   cxt.fillRect(tank.x+5,tank.y+6,20,8);
   //画出坦克的盖子
   cxt.fillStyle="#FEF26E";
   cxt.arc(tank.x+15,tank.y+10,4,0,360,true);
   cxt.fill();
   //画出炮筒(直线)
   cxt.strokeStyle="#FEF26E";
   //设置线条的宽度
   cxt.lineWidth=1.5;
   cxt.beginPath();
   cxt.moveTo(tank.x+15,tank.y+10);
   //向右
   if(tank.direct==1){
   cxt.lineTo(tank.x+30,tank.y+10);
   }else if(tank.direct==3){ //向左
   cxt.lineTo(tank.x,tank.y+10);
   }
   cxt.closePath();
   cxt.stroke();
   break;
  }
}
③画出三个敌人的坦克
tankGame3.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<h1>hmtl5-经典的坦克大战</h1>
<!--坦克大战的战场-->
<canvas id="tankMap" width="400px" height="300px" style="background-color:black"></canvas>
<!--把tankGames.js引入到本页面-->
<script type="text/javascript" src="tankGame3.js"></script>
<script type="text/javascript">
//得到画布
var canvas1=document.getElementById("tankMap");
//得到绘图上下文(你可以理解是画笔)
var cxt=canvas1.getContext("2d");

//我的坦克 hero
//方向
var hero=new Hero(140,140,0,heroColor);
//定义敌人的坦克(敌人的坦克有多少? 思路 : 是单个单个的定义,还是放在数组中?)
var enemyTanks=new Array();
//先死后活 ,定3个,后面我们把敌人坦克的数量,作出变量
//0->上, 1->右, 2->下 3->左
for(var i=0;i<3;i++){
  
  //创建一个坦克
  var enemyTank=new EnemyTank((i+1)*50,0,2,enmeyColor);
  //把这个坦克放入数组
  enemyTanks=enemyTank;
  
}
  //先调用一次
  flashTankMap();
//专门写一个函数,用于定时刷新我们的作战区,把要在作战区出现的元素(自己坦克,敌人坦克,子弹,炸弹,
//障碍物...)->游戏思想
function flashTankMap(){
  
  //把画布清理
  cxt.clearRect(0,0,400,300);
  //我的坦克
   drawTank(hero);
  //敌人的坦克
  //画出所有敌人坦克
  for(var i=0;i<3;i++){
   drawTank(enemyTanks);
  }
   
}


//这是一个接受用户按键函数
function getCommand(){
  
  //我怎么知道,玩家按下的是什么键
  //说明当按下键后 事件--->event对象----->事件处理函数()
  var code=event.keyCode;//对应字母的ascii码->我们看码表
  
  switch(code){
   case 87://上
    hero.moveUp();
   
      break;
   case 68:
   
     hero.moveRight();
      break;
    case 83:
   
    hero.moveDown();
    break;
   case 65:
    hero.moveLeft();
    break;
  }
  
  //触发这个函数 flashTankMap();
  flashTankMap();
  //重新绘制所有的敌人的坦克.你可以在这里写代码(思想,我们干脆些一个函数,专门用于定时刷新我们的画布[作战区])
}

</script>
</body>
</html>
tankGame3.js
//为了编程方便,我们定义两个颜色数组
var heroColor=new Array("#BA9658","#FEF26E");
var enmeyColor=new Array("#00A2B5","#00FEFE");
//其它的敌人坦克,这里的扩展性,还是不错的.
//这是一个Tank类
function Tank(x,y,direct,color){

  this.x=x;
  this.y=y;
  this.speed=1;
  this.direct=direct;
  //一个坦克,需要两个颜色.
  this.color=color;
  //上移
  this.moveUp=function(){
   this.y-=this.speed;
   this.direct=0;
  }
  //向右
  this.moveRight=function(){
   this.x+=this.speed;
   this.direct=1;
  }
  //下移
  this.moveDown=function(){
   this.y+=this.speed;
   this.direct=2;
  }
  //左
  this.moveLeft=function(){
   this.x-=this.speed;
   this.direct=3;
  }
}
//定义一个Hero类
//x 表示坦克的 横坐标, y 表示纵坐标, direct 方向
function Hero(x,y,direct,color){

  //下面两句话的作用是通过对象冒充,达到继承的效果
  this.tank=Tank;
  this.tank(x,y,direct,color);

}
//定义一个EnemyTank类
function EnemyTank (x,y,direct,color){
  
  //也通过对象冒充,来继承Tank
  this.tank=Tank;
  this.tank(x,y,direct,color);
}

//绘制坦克
function drawTank(tank){

  //考虑方向
  switch(tank.direct){
  case 0: //上
  case 2:// 下
   //画出自己的坦克,使用前面的绘图技术
   //设置颜色
   cxt.fillStyle=tank.color[0];
   //先死--->后活 (初学者最好用这个方法)
   //先画出左面的矩形
   cxt.fillRect(tank.x,tank.y,5,30);
   //画出右边的矩形(这时请大家思路->一定要一个参照点)
   cxt.fillRect(tank.x+15,tank.y,5,30);
   //画出中间矩形
   cxt.fillRect(tank.x+6,tank.y+5,8,20);
   //画出坦克的盖子
   cxt.fillStyle=tank.color[1];
   cxt.arc(tank.x+10,tank.y+15,4,0,360,true);
   cxt.fill();
   //画出炮筒(直线)
   cxt.strokeStyle=tank.color[1];
   //设置线条的宽度
   cxt.lineWidth=1.5;
   cxt.beginPath();
   cxt.moveTo(tank.x+10,tank.y+15);
   
   if(tank.direct==0){
   cxt.lineTo(tank.x+10,tank.y);
   }else if(tank.direct==2){
   cxt.lineTo(tank.x+10,tank.y+30);
   }
   cxt.closePath();
   cxt.stroke();
   break;
  case 1: //右和左
  case 3:
   //画出自己的坦克,使用前面的绘图技术
   //设置颜色
   cxt.fillStyle=tank.color[0];
   //韩老师使用 先死--->后活 (初学者最好用这个方法)
   //先画出左面的矩形
   cxt.fillRect(tank.x,tank.y,30,5);
   //画出右边的矩形(这时请大家思路->一定要一个参照点)
   cxt.fillRect(tank.x,tank.y+15,30,5);
   //画出中间矩形
   cxt.fillRect(tank.x+5,tank.y+6,20,8);
   //画出坦克的盖子
   cxt.fillStyle=tank.color[1];
   cxt.arc(tank.x+15,tank.y+10,4,0,360,true);
   cxt.fill();
   //画出炮筒(直线)
   cxt.strokeStyle=tank.color[1];
   //设置线条的宽度
   cxt.lineWidth=1.5;
   cxt.beginPath();
   cxt.moveTo(tank.x+15,tank.y+10);
   //向右
   if(tank.direct==1){
   cxt.lineTo(tank.x+30,tank.y+10);
   }else if(tank.direct==3){ //向左
   cxt.lineTo(tank.x,tank.y+10);
   }
   cxt.closePath();
   cxt.stroke();
   break;
  }
}

在js中如何通过对象冒充,实现继承的效果
test.html
<!DOCTYPE html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<script type="text/javascript">
//Animal 类
function Animal (name,age){
  this.name=name;
  this.age=age;
  this.aaa=function(){
   alert("yyy");
  }
}
function Dog(name,age){
  //把Animal 构造函数赋给this.hsp
  this.hsp=Animal;
  //运行调用!!!
  this.hsp(name,age);
}
var dog1=new Dog("小狗",20);
alert(dog1.name);
dog1.aaa();
</script>
</body>

好了,就写这么多,我觉得我加的注释已经很清楚了。(可能有错字,凑合看吧)
希望这次可以通过,没有加图片,慢慢看文字解释把
最后,祝愿吾爱破解越办越好!




发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2014-10-22 20:19
是没法羡慕你,抄袭都抄的这么没水平。http://www.3lian.com/edu/2013/09-03/94202.html

点评

H大。 屌.....  发表于 2015-1-3 12:34
牛逼哄哄  发表于 2014-10-22 22:24
哈哈,还是大神你聪明识破了他  发表于 2014-10-22 21:38
amisiyuoy 发表于 2014-10-22 23:06
847154652 发表于 2014-10-23 07:35
xiaoquan 发表于 2014-10-23 08:29 来自手机
无语,被揭穿是不是很没面子。以后不要干这种事了。
蚯蚓翔龙 发表于 2014-11-5 13:47
http://www.656463.com/article/3eYbQf.htm
好文章,不错,我指的是原作者
JPK 发表于 2014-11-9 20:49 来自手机
哇咔咔  的确很没水平额(⊙o⊙)…
一粒梦 发表于 2014-11-12 16:34
啊哈,给我一双慧眼吧
头像被屏蔽
嘉嘉 发表于 2014-12-24 21:01
提示: 作者被禁止或删除 内容自动屏蔽
社会太现实 发表于 2014-12-24 21:12
不得不骂你
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 18:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表