以前写的一个面向对象的贪吃蛇游戏

原创 2014年08月24日 15:14:43
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title> 贪吃蛇 </title>
<style>
#mapbox {
  font-family: 宋体; font-size: 17px; line-height:100%;
  height:360; width:430;
}
</style>

<script language="JavaScript">
/////////////////////
//     贪吃蛇      //
//   OO+TextBox    //
//  程序作者:海浪  //
/////////////////////

var map;
var gott;

function play()
{
  clearInterval(gott);
  map = new mapClass(25,20);
  document.onkeydown = keydown;
  gott = setInterval("map.snake.go()",150);
}

function keydown(e)
{
  e = e||event;
  switch (e.keyCode)
  {
    case 38: map.snake.refx(0); break;
    case 39: map.snake.refx(1); break;
    case 40: map.snake.refx(2); break;
    case 37: map.snake.refx(3); break;
    case 17: map.snake.stoporrun(); break;
  }
}
////////////////////////////////////////////

function mapClass(x,y)
{
  this.x = x;
  this.y = y;
  this.sq = "■";
  this.sk = " ";
  this.marr = [];
  for(var iy=0; iy<this.y; iy++)
  {
    this.marr[iy] = [];
    for(var ix=0; ix<this.x; ix++)
      this.marr[iy][ix] = (ix==0||iy==0||ix==this.x-1||iy==this.y-1)?this.sq:this.sk;
  }
  this.snake = new snakeClass(this);
  this.bean = new beanClass(this);
  this.bean.newbean();
  this.bean.addn();
}

mapClass.prototype.write = function()
{
  var str = "";
  for(var ii=0; ii<this.y; ii++)
    str += this.marr[ii].join("")+"<br />";
  document.getElementById("mapbox").innerHTML = str;
}

mapClass.prototype.rexy = function(x,y,s)
{
  var str = s || this.sk;
  this.marr[y][x] = str;
}

mapClass.prototype.jcxy = function(x,y,s)
{
  var str = s || this.sk;
  return this.marr[y][x] == str;
}

////////////////////////////////////////////

function snakeClass(po)
{
  this.parent = po;
  this.mt = "●";
  this.boarr = [];
  this.bolength = 4;
  this.fang = 1;
  this.fangtt = 1;
  this.stop = false;
  this.boarr[0] = this.addbody(3,5);
  this.parent.rexy(this.boarr[0].x,this.boarr[0].y,this.mt);
}

snakeClass.prototype.go = function()
{
  if(this.stop) return;
  this.fang = this.fangtt;
  var x = this.boarr[0].x + [0,1,0,-1][this.fang];
  var y = this.boarr[0].y + [-1,0,1,0][this.fang];
  var chi = this.parent.jcxy(x,y,this.parent.bean.mt);
  if(!this.parent.jcxy(x,y) && !chi)
  {
    clearInterval(gott);
    alert("Game Over!");
    return;
  }
  if(chi)
  {
    this.bolength++;
    this.parent.bean.addn();
    this.parent.bean.newbean();
  }
  this.parent.rexy(x,y,this.mt);
  this.boarr = [].concat(this.addbody(x,y),this.boarr);
  if(this.boarr.length>this.bolength)
  {
    var tb = this.boarr.pop();
    this.parent.rexy(tb.x,tb.y);
  }
  this.parent.write();
}

snakeClass.prototype.addbody = function(x,y)
{
  return { x:x, y:y };
}

snakeClass.prototype.refx = function(n)
{
  if(Math.abs(this.fang-n)!=2)
    this.fangtt=n;
}

snakeClass.prototype.stoporrun = function()
{
  this.stop = !this.stop;
}

////////////////////////////////////////////

function beanClass(po)
{
  this.parent = po;
  this.mt = "◎";
  this.sne = -100;
}

beanClass.prototype.addn = function()
{
  this.sne+=100;
  document.getElementById("fan").innerHTML = this.sne;
}

beanClass.prototype.newbean = function()
{
  var x = Math.floor(Math.random()*(this.parent.x-2))+1;
  var y = Math.floor(Math.random()*(this.parent.y-2))+1;
  if(this.parent.jcxy(x,y))
    this.parent.rexy(x,y,this.mt);
  else
    this.newbean();
}
</script>
</head>

<body>
<center>
<h2>贪吃蛇</h2><hr>
<div id="mapbox"></div>
<input type="button" value="开始" onclick="play()"> 得分:<span id="fan"></span>
<hr>
程序作者:海浪
</center>
</body>
</html>


以前写的一个面向对象的贪吃蛇游戏,修改了一下,以适应新的浏览器

版权声明:本文为博主原创文章,未经博主允许不得转载。

贪吃蛇c++实现

最近没事翻了一下以前写的程序,真是不堪入目,以前真是什么都不懂,不过有一个程序倒是挺有意思的,大二的时候写的一个贪吃蛇游戏,虽然程序非常难看,还有很多漏洞,但也是这个程序让我真正开始喜欢上了编程,不多...
  • u013708970
  • u013708970
  • 2014年11月08日 16:02
  • 1800

贪吃蛇

上传一个贪吃蛇的代码。 #include #include #include #include using namespace std; #define N 20 int snake1[400][2...
  • u013218768
  • u013218768
  • 2014年01月08日 10:57
  • 437

C++贪吃蛇源代码

以前用C++面向对象的思想在控制台写了个贪吃蛇小游戏,游戏共设有两关,有兴趣的朋友可以下载下来玩玩。 资源下载链接: http://download.csdn.net/detail/qq_3176...
  • qq_31766907
  • qq_31766907
  • 2015年12月14日 13:29
  • 680

贪吃蛇游戏~~~c++代码全文。。。附有详细注释。。。。。。

/************************贪吃蛇***********************/ /**********************2012-11-20**************...
  • ckcz123
  • ckcz123
  • 2012年11月20日 16:24
  • 24135

C++贪吃蛇的简单实现版

近期看完C++Primer,决定小试身手,碰巧看到某博主用C++实现了贪吃蛇,所以我也决定试一试。 C++编程的核心思想之一就是OO思维(面向对象思维),需要一定的抽象能力,同样还需要更好的封装。...
  • coderhuhy
  • coderhuhy
  • 2015年03月18日 18:30
  • 5733

贪吃蛇 小游戏 代码C++编写,面向对象设计

  • 2012年11月28日 17:17
  • 57KB
  • 下载

贪食蛇

上个礼拜写的,闲着无聊,没意思......::>_
  • xinghongduo
  • xinghongduo
  • 2010年10月03日 19:11
  • 692

贪吃蛇C++源码,使用面向对象方式编写

网上好多贪吃蛇的源码,不过大部分都是用C面向过程的.自己用面向对象写了一个贪吃蛇,不足之处还请大家见谅. 我定义了3个类. 地图类:包括地图的抽象数组, 地图里面包含一个食物的坐标.用户可...
  • stienian
  • stienian
  • 2015年03月18日 12:59
  • 2896

贪吃蛇小游戏 C++实现

#include #include #include #include using namespace std; // 刷新当前屏幕 inline void Refresh(char q[][22],...
  • zhouyusong_bupt
  • zhouyusong_bupt
  • 2016年04月05日 09:47
  • 984

c++之贪吃蛇

#include #include #include #include #include using namespace std; //--------------------------...
  • wyl_zheyang
  • wyl_zheyang
  • 2013年12月25日 20:48
  • 655
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:以前写的一个面向对象的贪吃蛇游戏
举报原因:
原因补充:

(最多只允许输入30个字)