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