俄罗斯方块游戏源代码476685Word格式.docx

上传人:b****3 文档编号:16753642 上传时间:2022-11-25 格式:DOCX 页数:54 大小:33.46KB
下载 相关 举报
俄罗斯方块游戏源代码476685Word格式.docx_第1页
第1页 / 共54页
俄罗斯方块游戏源代码476685Word格式.docx_第2页
第2页 / 共54页
俄罗斯方块游戏源代码476685Word格式.docx_第3页
第3页 / 共54页
俄罗斯方块游戏源代码476685Word格式.docx_第4页
第4页 / 共54页
俄罗斯方块游戏源代码476685Word格式.docx_第5页
第5页 / 共54页
点击查看更多>>
下载资源
资源描述

俄罗斯方块游戏源代码476685Word格式.docx

《俄罗斯方块游戏源代码476685Word格式.docx》由会员分享,可在线阅读,更多相关《俄罗斯方块游戏源代码476685Word格式.docx(54页珍藏版)》请在冰豆网上搜索。

俄罗斯方块游戏源代码476685Word格式.docx

try

DataInputStreamdis=newDataInputStream("

"

.getClass(>

.getResourceAsStream(SOUND_FILENAME>

>

byte[]soundBuffer=newbyte[dis.available(>

]。

dis.read(soundBuffer>

InputStreamis=newByteArrayInputStream(soundBuffer>

m_sounds=Manager.createPlayer(is,"

audio/x-wav"

>

m_sounds.realize(>

m_sounds.prefetch(>

}catch(Exceptione>

e.printStackTrace(>

}

publicstaticvoidplaySound(intsoundID>

playSound(soundID,1>

publicstaticvoidplaySound(intsoundID,intloopCount>

if(m_sounds==null>

return。

if(m_sounds.getState(>

==javax.microedition.media.Player.STARTED>

m_currentSoundID=soundID。

m_sounds.setMediaTime(0>

m_sounds.setLoopCount(loopCount>

m_sounds.start(>

Thread.sleep(50>

//maybethiscanhelpforsoundproblems

privatestaticvoidstopSound(>

throwsException

m_sounds.stop(>

==javax.microedition.media.Player.PREFETCHED>

m_sounds.deallocate(>

m_currentSoundID=-1。

e.printStackTrace(>

publicstaticintreadFileToMemory(StringfileName,byte[]buffer>

java.io.InputStreamfile=null。

intsize。

file=fileName.getClass(>

.getResourceAsStream(fileName>

size=file.read(buffer>

file.close(>

file=null。

return-1。

returnsize。

}

publicclassSound

{

publicstaticPlayerm_sounds。

publicstaticintm_currentSoundID=-1。

publicstaticbooleans_sound_bg_On=false。

//0.背景声音

{

if(m_sounds!

return。

try

{

DataInputStreamdis=newDataInputStream("

byte[]soundBuffer=newbyte[dis.available(>

dis.read(soundBuffer>

InputStreamis=newByteArrayInputStream(soundBuffer>

m_sounds=Manager.createPlayer(is,"

m_sounds.realize(>

m_sounds.prefetch(>

}catch(Exceptione>

e.printStackTrace(>

}

}

playSound(soundID,1>

if(m_sounds==null>

return。

if(m_sounds.getState(>

m_currentSoundID=soundID。

m_sounds.setMediaTime(0>

m_sounds.setLoopCount(loopCount>

m_sounds.start(>

Thread.sleep(50>

//maybethiscanhelpforsoundproblems

throwsException

m_sounds.stop(>

m_sounds.deallocate(>

m_currentSoundID=-1。

java.io.InputStreamfile=null。

intsize。

file=fileName.getClass(>

size=file.read(buffer>

file.close(>

file=null。

return-1。

}

现在CSDN上贴代码不如以前的好了!

<

使用方法是在主Canvas类的初始化或者游戏初始化的地方调用Sound类的initSound(>

方法,来初始化声音文件,

然后在想要播放的地方调用Sound类的playSound(>

方法,目前这个简单的例子里只有一个声音,所以参数给啥都一样,如果以后声音多了!

就可以用这个参数来区分用户要调用的是那个声音了!

这里的用户是相对这个Sound类的使用者,就是程序员,Sound类都是静态方法,这里相对于一个公共的工具类!

如果上述使用方法您没看明白,那就看一下代码

主Canvas类代码如下

viewplaincopytoclipboardprint?

//importjava.awt.*。

//importjava.awt.Canvas。

//importjava.awt.event.*。

//importjavax.swing.*。

importjava.util.Random。

importjavax.microedition.lcdui.*。

//写界面所需要的包

/**

*俄罗斯方块

*高雷

*2007年11月30日

*/

publicclasscGame240x320extendsCanvasimplementsRunnable

privateRandomrand。

privateThreadthread。

privateGraphicsgb。

privateImagebuffer。

privateImagegameOverImg。

//游戏结束

privatestaticfinalints_width=240。

privatestaticfinalints_height=320。

privatestaticfinalints_box_w=16。

privatestaticfinalints_box_h=16。

privatestaticfinalints_box_w_sum=10。

//操作区域宽格子数

privatestaticfinalints_box_h_sum=20。

//操作区域高格子数

privatestaticfinalints_line_between_x=s_box_w*s_box_w_sum。

//分割线x位置

publicstaticfinalintUP=-1。

publicstaticfinalintDOWN=-2。

publicstaticfinalintLEFT=-3。

publicstaticfinalintRIGHT=-4。

publicstaticfinalintinit_x=3。

//当前方块初始化坐标X

publicstaticfinalintinit_y=0。

//当前方块初始化坐标y

publicstaticints_box_x=init_x。

//当前方块坐标X

publicstaticints_box_y=init_y。

//当前方块坐标Y

privatestaticintlevel=1。

//等级

privatestaticintsuccess=0。

//得分

privatestaticlonggoDownDelayTime[]=//1800。

//下降延迟时间

1000,900,800,700,

600,500,400,

300,200,100

}。

privatestaticintlevel_up=(int>

(goDownDelayTime[0]-goDownDelayTime[level]>

//升级成绩

privatestaticbooleanisShowReseau=true。

//是否现实网格

privatestaticshorts_next_box=0。

//下一个方块编号

privatestaticshortboxColor。

//当前box的颜色

//privatestaticfinalColorgameBG=newColor(0x333333>

//游戏区域背景颜色

privatestaticfinalintgameBG=0x333333。

//privatestaticfinalColorgameColor[]=newColor[]

privatestaticfinalintgameColor[]=newint[]

0x444444,//newColor(0x444444>

//网格颜色

0xEEEEEE,//newColor(0xEEEEEE>

//方块颜色

0xEE0000,//newColor(0xEE0000>

0x00EE00,//newColor(0x00EE00>

0x0000EE,//newColor(0x0000EE>

0xEE00EE,//newColor(0xEE00EE>

0xEEEE00,//newColor(0xEEEE00>

0x00EEEE//newColor(0x00EEEE>

privatestaticfinalshortbox_sum[][]=newshort[][]//所有方块图形

{0x0660,0x0660,0x0660,0x0660},

{0x2222,0x00F0,0x2222,0x00F0},

{0x0264,0x0630,0x0264,0x0630},

{0x0462,0x0360,0x0462,0x0360},

{0x02E0,0x4460,0x0740,0x0622},

{0x0E20,0x2260,0x0470,0x0644},

{0x0464,0x00E4,0x04C4,0x04E0}

privatestaticshortnext_box[]=newshort[]{0x0660,0x0660,0x0660,0x0660}。

privatestaticshortbox[]=newshort[]{0x0660,0x0660,0x0660,0x0660}。

privatestaticshortmap[][]。

//地图

privatestaticshortbox_state=0。

//当前BOX的状态//旋转方向

privatestaticshortmatrix[][]=//定义矩阵用来计算出box_sum的方块

{0x1000,0x0100,0x0010,0x0001},

{0x2000,0x0200,0x0020,0x0002},

{0x4000,0x0400,0x0040,0x0004},

{(short>

0x8000,0x0800,0x0080,0x0008}

publiccGame240x320(>

setFullScreenMode(true>

//设置游戏为全屏幕模式,该函数只能在支持midp2.0的手机上使用

//s_width=getWidth(>

//得到屏幕尺寸宽

//s_height=getHeight(>

//得到屏幕尺寸高

rand=newRandom(System.currentTimeMillis(>

//gameOverImg=Toolkit.getDefaultToolkit(>

.getImage("

src/pics/laser.png"

gameOverImg=Image.createImage("

/pics/laser.png"

}catch(Exceptione>

{}

//setSize(s_width,s_height>

//设置画布

Sound.initSound(>

//初始化声音资源

initGame(>

//游戏初始化

thread=newThread(this>

thread.start(>

privatevoidinitGame(>

level=1。

//等级

success=0。

map=newshort[s_box_h_sum][s_box_w_sum]。

setNextBox(>

//设置下一个BOX

setBox(>

//将下一个BOX设置成当前BOX

setGameOver(false>

//恢复游戏

privatevoidsetBox(>

//将next_box设置成当前可控制box

box_state=0。

//box状态

s_box_x=init_x。

//当前方块坐标X

s_box_y=init_y。

boxColor=s_next_box。

//设置当前BOX颜色

System.arraycopy(next_box,0,box,0,next_box.length>

//box=next_box

goDownPreTime=System.currentTimeMillis(>

//设置好当前BOX后计时

if(!

isCanMove(>

setGameOver(true>

publicstaticbooleanisGameOver=false。

publicstaticlongupdatas=0。

publicstaticlongfps=0。

privatelongstartTime,beginTime,endTime。

privatelongdelay=25。

privatelongupTime=25。

publicvoidrun(>

while(true>

beginTime=System.currentTimeMillis(>

updatas++。

updata(updatas>

repaint(>

endTime=System.currentTimeMillis(>

upTime=endTime-beginTime。

if(upTime<

delay>

fps=1000/delay。

thread.sleep(delay-upTime>

else

fps=1000/upTime。

{}

}

voidsetGameOver(boolean_isGameOver>

isGameOver=_isGameOver。

publicvoidupdata(longupdatas>

publicvoidupdate(Graphicsg>

paint(g>

publicstaticintoffx=0。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 城乡园林规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1