⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 用midp实现贪吃蛇游戏(2).htm

📁 j2me 手机游戏编程,
💻 HTM
📖 第 1 页 / 共 2 页
字号:
      href="http://act.it.sohu.com/book/chapter.php?id=461&amp;volume=4&amp;chapter=14">下一页</A></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </DIV></TD></TR>
  <TR class=center01>
    <TD style="PADDING-LEFT: 10px; PADDING-TOP: 10px" align=middle 
    colSpan=2>&nbsp;</TD></TR>
  <TBODY>
  <TR>
    <TD align=middle colSpan=2><BR>
      <DIV style="FONT-SIZE: 18pt; COLOR: #990000; FONT-FAMILY: 楷体_GB2312" 
      align=center><B>Java手机游戏开发实例</B></DIV><BR>
      <DIV style="FONT-SIZE: 18px; COLOR: #990000; FONT-FAMILY: ; 宋体: " 
      align=center>用MIDP实现贪吃蛇游戏(2)</DIV>
      <DIV 
      style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FONT-SIZE: 10.5pt; COLOR: black; LINE-HEIGHT: 180%" 
      align=left><BR>&nbsp;&nbsp;&nbsp;&nbsp;
      <P><SPAN class=f14>  <STRONG>WormLink类 
      </STRONG><BR><BR>  贪吃蛇是由一节一节组成的。因为它经常有一些节连成一条直线形成段,所以这是一种相对有效的方法来保存整个蛇。[X,Y]表示段头部的坐标,然后段的头部开始按照方向向后画若干节。(段的头尾和蛇的头尾不是一个概念)<BR><BR>  下面代码段是WormLink中的段得属性:<BR><BR></P>
      <TABLE width="100%" bgColor=#ffffff>
        <TBODY>
        <TR>
          <TD>// 段头部坐标<BR><BR>private int x, y;<BR><BR>// 段长度<BR><BR>private 
            int len;<BR><BR>// 移动方向<BR><BR>private byte dir; 
      </TD></TR></TBODY></TABLE><BR>  下面重点介绍几个重要函数:<BR><BR>  public void 
      decreaseLength()<BR><BR>  这是从段的头部减少一格<BR><BR>
      <TABLE width="100%" bgColor=#ffffff>
        <TBODY>
        <TR>
          <TD>// 首先段的总长度减少1<BR><BR>len--;<BR><BR>switch (dir) { // 
            不同的方向左边的改变也不一样<BR><BR>case Worm.LEFT:<BR><BR>x--; break;<BR><BR>case 
            Worm.RIGHT:<BR><BR>x++; break;<BR><BR>case Worm.UP:<BR><BR>y--; 
            break;<BR><BR>case Worm.DOWN:<BR><BR>y++; break; 
      }</TD></TR></TBODY></TABLE><BR>  public boolean contains(int x, int 
      y)<BR><BR>  判断所给的坐标[x,y]是否包含在段中<BR><BR>
      <TABLE width="100%" bgColor=#ffffff>
        <TBODY>
        <TR>
          <TD>switch (dir) { // 不同的方向判断的方法也不一样<BR><BR>case 
            Worm.LEFT:<BR><BR>return ((y == this.y) &amp;&amp; ((x &lt;= this.x) 
            &amp;&amp; (x &gt;= getEndX())));<BR><BR>case 
            Worm.RIGHT:<BR><BR>return ((y == this.y) &amp;&amp; ((x &gt;= 
            this.x) &amp;&amp; (x &lt;= getEndX())));<BR><BR>case 
            Worm.UP:<BR><BR>return ((x == this.x) &amp;&amp; ((y &lt;= this.y) 
            &amp;&amp; (y &gt;= getEndY())));<BR><BR>case 
            Worm.DOWN:<BR><BR>return ((x == this.x) &amp;&amp; ((y &gt;= this.y) 
            &amp;&amp; (y &lt;= 
      getEndY())));<BR><BR>}</TD></TR></TBODY></TABLE><BR>  public int 
      getEndX()<BR><BR>  得到这一段的尾部x坐标(段方向指向的最后一格的坐标),当这段是蛇的头部段时,得到的是头部最前面的坐标。<BR><BR>
      <TABLE width="100%" bgColor=#ffffff>
        <TBODY>
        <TR>
          <TD>// 不同的方向判断方法不一样<BR><BR>if (dir == Worm.LEFT) <BR><BR>return 
            x-len;<BR><BR>if (dir == Worm.RIGHT)<BR><BR>return 
            x+len;<BR><BR>return x; </TD></TR></TBODY></TABLE><BR>  <B>WormPit类 
      </B><BR><BR>  WormPit类中包括了Worm和WormFood。贪吃蛇将会在画面中移动寻找食物。如果它吃到食物它将会长一格。如果它碰到边界或者吃到自己将Game 
      Over。<BR><BR>  下面介绍几个重要的函数:<BR><BR>  private void 
      paintPitContents(Graphics g) <BR><BR>  重绘屏幕上的所有元素<BR><BR>
      <TABLE width="100%" bgColor=#ffffff>
        <TBODY>
        <TR>
          <TD>// 更新贪吃蛇的状态<BR><BR>myWorm.update(g); <BR><BR>// 
            头部的位置和食物的位置重合就吃到食物<BR><BR>if (myFood.isAt(myWorm.getX(), 
            myWorm.getY())) {<BR><BR>myWorm.eat();<BR><BR>score += 
            level;<BR><BR>foodEaten++;<BR><BR>if (foodEaten &gt; (level &lt;&lt; 
            1)) {<BR><BR>/* 增加游戏难度 */<BR><BR>forceRedraw = 
            true;<BR><BR>foodEaten = 0;<BR><BR>level++;<BR><BR>if (tonePlayer != 
            null) {<BR><BR>try 
            {<BR><BR>tonePlayer.setMediaTime(0);<BR><BR>tonePlayer.start();<BR><BR>} 
            catch (MediaException me) { } }<BR><BR>} else {<BR><BR>if 
            (audioPlayer != null) {<BR><BR>try {<BR><BR>Manager.playTone(69, 50, 
            100); // Play audio<BR><BR>} catch (MediaException me) { } } 
            }<BR><BR>g.setColor(WormPit.ERASE_COLOUR);<BR><BR>// 
            填充长方形(三个字的宽度)<BR><BR>g.fillRect((width - (SCORE_CHAR_WIDTH * 
            3))-START_POS,<BR><BR>height-START_POS,<BR><BR>(SCORE_CHAR_WIDTH * 
            3),<BR><BR>SCORE_CHAR_HEIGHT);<BR><BR>g.setColor(WormPit.DRAW_COLOUR);<BR><BR>// 
            显示新的分数<BR><BR>g.drawString("" + score, <BR><BR>width - 
            (SCORE_CHAR_WIDTH * 3) - START_POS, <BR><BR>height - START_POS, 
            Graphics.TOP|Graphics.LEFT);<BR><BR>// 
            重新生成食物<BR><BR>myFood.regenerate();<BR><BR>int x = 
            myFood.getX();<BR><BR>int y = myFood.getY();<BR><BR>while 
            (myWorm.contains(x, y)) {<BR><BR>// 
            如果食物和贪吃蛇的身体重复就重新生成<BR><BR>myFood.regenerate();<BR><BR>x = 
            myFood.getX(); y = myFood.getY(); } }<BR><BR>// 
            画出食物<BR><BR>myFood.paint(g);<BR><BR>} catch (WormException se) { 
            gameOver = true; }<BR></TD></TR></TBODY></TABLE><BR>  public void 
      run()<BR><BR>  主循环体:<BR><BR>
      <TABLE width="100%" bgColor=#ffffff>
        <TBODY>
        <TR>
          <TD>while (!gameDestroyed) { // 游戏不终止就一直循环执行<BR><BR>try 
            {<BR><BR>synchronized (myWorm) { // 多线程中要进行同步<BR><BR>// 
            如果游戏结束<BR><BR>if (gameOver) {<BR><BR>if 
            (WormScore.getHighScore(level) &lt; score) {<BR><BR>// 
            把最高分保存<BR><BR>WormScore.setHighScore(level, score, "me"); 
            }<BR><BR>if ((audioPlayer != null) &amp;&amp; 
            <BR><BR>(audioPlayer.getState() == Player.STARTED)) {<BR><BR>try 
            {<BR><BR>audioPlayer.stop();<BR><BR>Manager.playTone(60, 400, 
            100);<BR><BR>} catch (Exception ex) { } }<BR><BR>// 
            重绘<BR><BR>repaint();<BR><BR>// 游戏结束时等待用户重新开始<BR><BR>myWorm.wait(); 
            <BR><BR>} else if (gamePaused) 
            {<BR><BR>//重绘<BR><BR>repaint();<BR><BR>// 
            游戏暂停时等待用户重新开始<BR><BR>myWorm.wait();<BR><BR>} else {<BR><BR>// 
            游戏继续<BR><BR>myWorm.moveOnUpdate();<BR><BR>repaint();<BR><BR>// 
            这里的等待时间决定了游戏难度!!!<BR><BR>myWorm.wait(DEFAULT_WAIT-(level*40));<BR><BR>}<BR><BR>}<BR><BR>} 
            catch (java.lang.InterruptedException ie) 
        {<BR><BR>}<BR><BR>}<BR></TD></TR></TBODY></TABLE></SPAN><BR><BR></DIV></TD></TR>
  <TR>
    <TD class=center01>
      <DIV align=center>来源:天极网 作者:
      <DIV></DIV></DIV></TD>
    <TD class=center01 width=280>
      <DIV align=center><FONT color=#0000ff><A 
      href="http://act.it.sohu.com/book/chapter.php?id=461&amp;volume=4&amp;chapter=12">上一页</A></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <FONT color=#0000ff><A 
      href="http://act.it.sohu.com/book/serialize.php?id=461">回书目</A></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <FONT color=#0000ff><A 
      href="http://act.it.sohu.com/book/chapter.php?id=461&amp;volume=4&amp;chapter=14">下一页</A></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </DIV></TD></TR></TBODY></TABLE>
<TABLE>
  <TBODY>
  <TR>
    <TD width=760>
      <TABLE height=10 cellSpacing=0 cellPadding=0 width=760 border=0>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE><!------------ 评论 ---------------->
      <TABLE cellSpacing=0 cellPadding=0 width=760 border=0>
        <TBODY>
        <TR>
          <TD><IFRAME id=vs src="用MIDP实现贪吃蛇游戏(2).files/comment_list1.htm" 
            frameBorder=0 width="100%" 
      scrolling=no></IFRAME></TD></TR></TBODY></TABLE><BR>
      <SCRIPT language=javascript>function CheckNetwordForm(theForm){        if("" == theForm.content.value)        {                alert("写两句吧~~");                theForm.content.focus();                return false;        }        var index;        for(index=0;index<theForm.content.value.length;index++)        {                if(" " != theForm.content.value.charAt(index))                        break;        }        if(index == theForm.content.value.length) {                alert("写两句吧~~");                theForm.content.focus();                return false;        }        if (theForm.content.value.length>100){                alert("评论字数不能超过100哦");                theForm.content.focus();                return false;        }        return true;}</SCRIPT>
<!------------------ 评论 --------------->
      <FORM name=netword onsubmit="javascript: return CheckNetwordForm(this);" 
      action=insertnetword.php method=post>
      <TABLE cellSpacing=0 cellPadding=0 width=760 border=0>
        <TBODY>
        <TR>
          <TD class=text6 height=25>&nbsp;给此书打分:<A name=1></A> <SELECT 
            name=score> <OPTION value=5 selected>非常好</OPTION> <OPTION 
              value=4>还凑合</OPTION> <OPTION value=3>一般吧</OPTION> <OPTION 
              value=2>不太行</OPTION> <OPTION value=1>太差了</OPTION></SELECT> &nbsp; 
            用户名: <INPUT id=id type=hidden value=461 name=id> <INPUT type=hidden 
            value=/book/chapter.php?id=461&amp;volume=4&amp;chapter=13 
            name=backurl> <INPUT id=username maxLength=20 name=username> <FONT 
            color=#666666>*评论字数请控制在一百字以内</FONT> </TD></TR></TBODY></TABLE><BR>&nbsp;<TEXTAREA id=description name=content rows=4 wrap=off cols=80></TEXTAREA> 
<INPUT type=submit value=提交 name=Submit> 
</FORM></TD></TR></TBODY></TABLE></TD></TR></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=760 border=0>
  <TBODY>
  <TR>
    <TD width=1003 background=用MIDP实现贪吃蛇游戏(2).files/t_bj01.gif height=9><IMG 
      height=1 src="" width=1></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=760 bgColor=#ffffff border=0>
  <TBODY>
  <TR>
    <TD>
      <HR width=760 noShade SIZE=1>
    </TD></TR>
  <TR>
    <TD align=middle><A class=black href="http://www.chinaren.com/" 
      target=_blank>ChinaRen</A> - <A class=black 
      href="http://big5.www.sohu.com/" target=_blank>繁体版</A> - <A class=black 
      href="http://hr.sohu.com/hrm.html" target=_blank>搜狐招聘</A> - <A class=black 
      href="http://add.sohu.com/" target=_blank>网站登录</A> - <A class=black 
      href="http://help.sohu.com/" target=_blank>帮助中心</A> - <A class=black 
      href="http://book.news.sohu.com/onClick=this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.sohu.com');return" 
      target=_blank false;>设置首页</A> - <A class=black 
      href="http://adinfo.sohu.com/" target=_blank>广告服务</A> - <A class=black 
      href="http://www.sohu.com/about/lianxi.htm" target=_blank>联系方式</A> - <A 
      class=black href="http://www.sohu.com/about/privacy.html" 
      target=_blank>保护隐私权</A> - <A class=black href="http://www.sohu.com/about/" 
      target=_blank>About SOHU</A> - <A class=black 
      href="http://www.sohu.com/about/" target=_blank>公司介绍</A><BR><SPAN 
      class=eng>Copyright &copy; 2004 Sohu.com Inc. All rights reserved. 搜狐公司 
      版权所有</SPAN> </TD></TR></TBODY></TABLE></CENTER><!-- START NNR Site Census V5.1 --><!-- COPYRIGHT 2004 Nielsen // Netratings -->
<SCRIPT language=JavaScript type=text/javascript>
<!--
	var _rsCI="cn-sohu";
	var _rsCG="0";
	var _rsDT=0;
	var _rsDU=0; 
	var _rsDO=0; 
	var _rsX6=0;  
	var _rsSI=escape(window.location);
	var _rsLP=location.protocol.indexOf('https')>-1?'https:':'http:';
	var _rsRP=escape(document.referrer);
	var _rsND=_rsLP+'//secure-cn.imrworldwide.com/';

	if (parseInt(navigator.appVersion)>=4)
	{
		var _rsRD=(new Date()).getTime();
		var _rsSE=1;	
		var _rsSV="";
		var _rsSM=0.01;
		_rsCL='<scr'+'ipt language="JavaScript" type="text/javascript" src="'+_rsND+'v51.js"><\/scr'+'ipt>';
	}
	else
	{
		_rsCL='<img src="'+_rsND+'cgi-bin/m?ci='+_rsCI+'&cg='+_rsCG+'&si='+_rsSI+'&rp='+_rsRP+'">';
	}
	document.write(_rsCL);
//-->
</SCRIPT>
<NOSCRIPT><IMG alt="" src="用MIDP实现贪吃蛇游戏(2).files/m.gif"> </NOSCRIPT><!-- END NNR Site Census V5.1 -->
<SCRIPT language=JavaScript src="用MIDP实现贪吃蛇游戏(2).files/nnselect.js"></SCRIPT>
<NOSCRIPT><IMG height=1 src="" width=1> </NOSCRIPT></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -