📄 java游戏编程初步2.htm
字号:
<P> mouseExited() 当鼠标离开你所监听的组件时发生.</P>
<P> <B>Mouse 移动事件</B></P>
<P> 鼠标移动主要通过接口MouseMotionListener来实现:</P>
<P> mouseDragged() 当用户按下鼠标按钮并在松开之前进行移动时发生.在mouseDragged()
后松开鼠标不会导致mouseClicked().</P>
<P> mouseMoved() 当鼠标在组件上移动而 不时拖动时发生.</P>
<P> 依据我们的游戏设计,我们在这要使用到MouseListener接口。实现接口后。我们要在init()函数加入监听器addMouseLisener(),来监听对applet的响应事件。</P>
<P> 知道了鼠标事件的处理,我们再来回顾一下上面提到的球反弹设计,现在我们要如何处理了球的控制呢?让我们想一想,不错,可能你已经发现了,我们照样可通过改变speed方向来实现回弹控制操作。在mousePressed(){}事件中加入下面的代码,我们的回弹控制就设计完成。</P>
<P>speed = -4<BR></P>
<P> 记得在释放applet资源时,我们要释放mouseListener资源。在destory()中加入</P>
<P>removeMouseListener(this);</P>
<P> 可能有些朋友会使用mouseDown()方法,mouseDown()在此我建议大家不要再使用这个方法了,它已经是被淘汰的产品。是为了兼容JDK1.0而带到JDK1.4中来的。</P>
<P><FONT size=3><STRONG>键盘监听技术</STRONG> </FONT></P>
<P></P>
<P><FONT size=3></FONT></P>
<P> 知道了鼠标的操作处理,键盘的操作处理就很简单了。我们只要实现keyListener接口,并在相应的事件中加入我们要实现的代码。</P>
<P> KeyPressed: 当按键时发生</P>
<P> KeyReleased:当翻译键时发生</P>
<P> KeyTyped:当打击键时发生</P>
<P></P>
<P> 由于在后面我们设计的游戏中我们不会使用到键盘操作,键盘事件处理我们就交给大家自己去实现。</P>
<P></P>
<P> 现在我们来回顾一下我们能做什么了?移动一个物体,加载声音和图片,用鼠标对游戏进行一定的控制。哦,我的天,我们已经可以做自己的很简单的游戏了。是的,你可以了,我认为在此,大家可以放下教程,把自己小时候一直想玩的游戏,把自己学程序时一直想做的游戏自己进行设计实现,这对你的帮助将是非常大的。对你的编程水平也是一个很大的提高。</P>
<P> 当然如果你仍然认为自己认识还不是很深,下面让我们来设计一个完整的游戏。这将是一个很有意思的过程。</P>
<P></P>
<P> <B>第一个游戏-"保卫者"</B></P>
<P> 主线思路:</P>
<P> 真正做自己的游戏是总是很兴奋。在开始任何事情之前,我们都要有个好的设计,游戏更不例外。下面我们就以上面的例子为本。设计一个”保卫者”的游戏。游戏思路本身很简单,从屏幕的顶端不断的有炸弹落下来,而我们这些”保卫者”
要在它们着地之前,用鼠标点击让它反弹回去,不让它落到地面上来,但是球在上升过程中我们也要注意不让它撞到顶上。如果撞到顶上或地画,你的生命点数都会减少。每点中一个炸弹你的分数就会增加。当你的生命点数为零。”Game
Over”。</P>
<P> 设计结构:</P>
<P> 1.模块设计:</P>
<P> 游戏的结构很简单,由三个模块组成。</P>
<P> Denfen类:Denfen类控制整个游戏主线程,初始化炸弹类,并绘制屏幕上的炸弹数量及处理炸弹的移动,并监听鼠标事件</P>
<P> Bomb类:主要是判断炸弹的速度,方向,是否撞到地面和点击事件</P>
<P> Denfense类:主要用来处理游戏者的记分和生命点数</P>
<P></P>
<P> 2.方法实现:</P>
<P> Denfen:</P>
<P> init(): 初始化所有对象,包括声音文件的加载,Bomb类的生成</P>
<P> run(): 处理炸弹的下降运动</P>
<P> paint(...):绘制炸弹及相关的数据记录显示</P>
<P> update(...): 实现屏幕图像的双缓冲,消除闪烁</P>
<P> mouseProcess (...):
利用mouseEvent事件监听来处理鼠标按下事件,并根据鼠标当时的x坐标和y坐标判断是否点中炸弹。</P>
<P> addBomb():利用默认值来动态实现bomb的生成,这里我们利用了数组来记录的。默认值是3,大家可依据自己的爱好增加或减少记录。</P>
<P> Denfenser:</P>
<P> Score:积分</P>
<P> Life:生命点</P>
<P> AddScore():增加游戏者的积分</P>
<P> Death():减少游戏者的生命点数</P>
<P> getScore():获得当前的积分数</P>
<P> getLife():获得当前的生命点数</P>
<P> Bomb:</P>
<P> Bomb(...): 构造函数,初始化炸弹的位置,声音,颜色等相关变量的值.</P>
<P> down():处理bomb的下降</P>
<P> isRebound ():反向回弹炸弹的方向,并根据积分来加快炸弹的下降速度</P>
<P> userHit (int x, int y):游戏者是否点中炸弹。</P>
<P> wasHitEarth(): 判断炸弹是否撞击到地面或顶面,如果是生命点将减少。</P>
<P> DrawBomb(Graphics g): 绘制Bomb图象。</P>
<P> 3.工作原理:</P>
<P> 首先我们在init()方法中加载所有游戏必要的资源,包括声音,鼠标事件的监听、背景等相关设置。利用addBomb()方法增加bomb的数量、初始位置及初始化颜色。再利用start()启动线程。线程调用run()方法,处理炸弹下降运动down()。Repaint()会在每一个单位时间调用paint()方法不断的刷新屏幕,paint()调用Bomb.addBomb()绘制炸弹。当游戏者按下鼠标,mousePress()事件激活,判断是否点中了炸弹。如果点中addScore()自动加1分。如果没有点中炸弹,炸弹继续下降,当撞到屏幕wasHitEarth()方法激活,其内调用death()方法,减少Denfenser.life生命点,同时audio.play()处理声音的播放,用以提示游戏者。当你的生命点数小于0时”Game
Over”。</P< p>
<P align=center><B><A
href="http://www.javaeasy.com/ArticleShow.asp?ArticleID=772&ArticlePage=1">上一页</A> <A
href="http://www.javaeasy.com/ArticleShow.asp?ArticleID=772&ArticlePage=1">[1]</A> <FONT
color=red>[2]</FONT> <A
href="http://www.javaeasy.com/ArticleShow.asp?ArticleID=772&ArticlePage=3">[3]</A> <A
href="http://www.javaeasy.com/ArticleShow.asp?ArticleID=772&ArticlePage=3">下一页</A></B></P>
<P></P></TD>
<TD width=20> </TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center
bgColor=#ffffff border=0>
<TBODY>
<TR>
<TD vAlign=top height=37>
<DIV align=center></DIV></TD></TR></TBODY></TABLE>
<TABLE class=border style="WORD-BREAK: break-all" cellSpacing=0
cellPadding=0 width="100%" align=center bgColor=#ffffff border=0>
<TBODY>
<TR class=tdbg>
<TD><IMG height=14 src="Java游戏编程初步2.files/aer.gif" width=8
border=0>上一篇文章:<A
title="文章标题:Java学习 :第二十讲 动画制作及声音载入(三) 作 者:佚名 更新时间:2004-5-31 9:32:57 点击次数:163"
href="http://www.javaeasy.com/ArticleShow.asp?ArticleID=748">Java学习 :第二十讲 动画制作及声音载入(三)</A><BR><IMG
height=14 src="Java游戏编程初步2.files/aer.gif" width=8 border=0>下一篇文章:没有了
</TD></TR></TBODY></TABLE>
<DIV align=right>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center
bgColor=#ffffff border=0>
<TBODY>
<TR>
<TD>
<DIV align=right><A
href="http://www.javaeasy.com/Comment.asp?ArticleID=772"
target=_blank><IMG src="Java游戏编程初步2.files/pl.jpeg" border=0></A><A
href="http://www.javaeasy.com/printpage.asp?ArticleID=772"><IMG
src="Java游戏编程初步2.files/print.jpeg"
border=0></A></DIV></TD></TR></TBODY></TABLE></DIV>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center
bgColor=#ffffff border=0>
<TBODY>
<TR>
<TD vAlign=top width="33%">
<TABLE class=border style="WORD-BREAK: break-all" cellSpacing=0
cellPadding=0 width="100%" border=0>
<TBODY>
<TR class=title>
<TD vAlign=top background=Java游戏编程初步2.files/homedhbg.gif><IMG
height=34 src="Java游戏编程初步2.files/xgwz.gif" width=173
border=0></TD></TR>
<TR class=tdbg>
<TD vAlign=top height=100>
<LI><A
title="文章标题:JAVA中通用JPEG缩影图Bean的制作与示例 作 者:AbnerChai 更新时间:2004-7-9 9:16:11 点击次数:538"
href="http://www.javaeasy.com/ArticleShow.asp?ArticleID=779">JAVA中通用JPEG缩影图Bean的制…</A>[<FONT
color=red>538</FONT>]<BR>
<LI><A
title="文章标题:JFreeChart -- 柱状图 作 者:王恩建 更新时间:2004-6-19 21:55:03 点击次数:1102"
href="http://www.javaeasy.com/ArticleShow.asp?ArticleID=778">JFreeChart -- 柱状图</A>[<FONT
color=red>1102</FONT>]<BR>
<LI><A
title="文章标题:JFreeChart-饼状图-中级 作 者:王恩建 更新时间:2004-6-19 21:53:09 点击次数:837"
href="http://www.javaeasy.com/ArticleShow.asp?ArticleID=777">JFreeChart-饼状图-中级</A>[<FONT
color=red>837</FONT>]<BR>
<LI><A
title="文章标题:JFreeChart-饼状图-初级 作 者:王恩建 更新时间:2004-6-19 21:50:58 点击次数:736"
href="http://www.javaeasy.com/ArticleShow.asp?ArticleID=776">JFreeChart-饼状图-初级</A>[<FONT
color=red>736</FONT>]<BR>
<LI><A
title="文章标题:文本编辑器源文件 作 者:大砍刀 更新时间:2004-6-19 21:37:07 点击次数:1055"
href="http://www.javaeasy.com/ArticleShow.asp?ArticleID=775">文本编辑器源文件</A>[<FONT
color=red>1055</FONT>]<BR></LI></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE class=border style="WORD-BREAK: break-all" cellSpacing=0
cellPadding=0 width="100%" align=center bgColor=#ffffff border=0>
<TBODY>
<TR class=title>
<TD vAlign=top width="5%" background=Java游戏编程初步2.files/homedhbg.gif
height=34><IMG height=34 src="Java游戏编程初步2.files/wzpl.gif"
width=126></TD>
<TD vAlign=center width="95%"
background=Java游戏编程初步2.files/homedhbg.gif>
<TABLE cellSpacing=0 cellPadding=0 width="75%" border=0>
<TBODY>
<TR>
<TD>
<P></P>
<P>(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)</P></TD></TR></TBODY></TABLE></TD></TR>
<TR class=tdbg>
<TD colSpan=2> 没有任何评论
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="99%" align=center bgColor=#ffffff
border=0>
<TBODY>
<TR>
<TD>
<TABLE class=border cellSpacing=0 cellPadding=0 width=760 align=center
border=0>
<TBODY>
<TR class=title align=middle height=20>
<TD>┋ <A
onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.javaeasy.com/');"
href="http://www.javaeasy.com/ArticleShow.asp?ArticleID=772&ArticlePage=2#">设为首页</A> ┋ <A
href="javascript:window.external.addFavorite('http://www.javaeasy.com/','javaeasy')">加入收藏</A> ┋ <A
href="mailto:chen134888@sohu.com">联系站长</A> ┋ <A
href="http://www.javaeasy.com/FriendSite.asp"
target=_blank>友情链接</A> ┋ <A
href="http://www.javaeasy.com/admin/login.asp"
target=_blank>关于本站</A> ┋ <BR>版权所有 Copyright © 2004 <A
href="http://www.javaeasy.com/SiteUrl" target=_blank>JavaEasy.com ,
All Rights Reserved </A></TD></TR>
<TR class=tdbg vAlign=bottom align=middle height=20>
<TD></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -