手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>Java技术>列表

J2ME-MIDP1.0游戏完整实现-双人扫雷1.0(二)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

bomb1Img=Image.createImage("/bomb1big.png");
bomb2Img=Image.createImage("/bomb2big.png");
bomb3Img=Image.createImage("/bomb3big.png");
bomb4Img=Image.createImage("/bomb4big.png");
bomb5Img=Image.createImage("/bomb5big.png");
bomb6Img=Image.createImage("/bomb6big.png");
infoImg=Image.createImage("/info.png");
splashImage=Image.createImage("/occo.png");
player1TurnImg=Image.createImage("/player1turn.png");
player2TurnImg=Image.createImage("/player2turn.png");
}catch(IOException e){}
isPlayer1=true;//初始化玩家先后顺序
miningGridLength=14;//初始化每一个雷位的边长
miningMapLength=14*12;//整个扫雷棋盘的边长
miningMapX=(canvasW-miningMapLength)/2;//屏幕上棋盘左上角的X坐标
miningMapY=(canvasH-miningMapLength)/2;//屏幕上棋盘左上角的Y坐标
selectedX=selectedY=miningMapGrid/2;//初始化选择框的坐标为
player1Found=player2Found=0;//初始化两个玩家的得分
paintX=paintY=3;//初始化整个雷区一开始在屏幕上显示的范围
sbWon=false;//初始化没有玩家获胜
bombLeft=bombNum;//初始化剩余雷数为总雷数
bombs=new Bomb[miningMapGrid 2][miningMapGrid 2];
bombInit();//初始化雷区
}
private void paintGameScreen(Graphics g){
paintPlayer(g,isPlayer1);
paintMiningMap(g);
paintInfo(g);
paintSelected(g);
}
protected void paintInfo(Graphics g){
g.drawImage(infoImg,miningMapX bombMapW*miningGridLength 1,
miningMapY,Graphics.TOP|Graphics.LEFT);
g.setFont(font);
g.setColor(0x00FFFFFF);
g.drawString(String.valueOf(bombLeft),miningMapX bombMapW*miningGridLength bombnowX,
miningMapY bombnowY,Graphics.TOP|Graphics.LEFT);
g.drawString(String.valueOf(player1Found),miningMapX bombMapW*miningGridLength Player1X,
miningMapY Player1Y,Graphics.TOP|Graphics.LEFT);
g.drawString(String.valueOf(player2Found),miningMapX bombMapW*miningGridLength Player2X,
miningMapY Player2Y,Graphics.TOP|Graphics.LEFT);
//这个方法中接下来的代码是用来在信息框中画出小地图,也就是屏幕上显示的地雷区域在整个雷区
中的位置
g.setColor(0x00777777);
g.fillRect(miningMapX bombMapW*miningGridLength 1,miningMapY 8*miningGridLength 1,
2*miningGridLength-2,2*miningGridLength-1);
g.setColor(0x00000000);
g.drawRect(miningMapX bombMapW*miningGridLength 1,miningMapY 8*miningGridLength 1,
2*miningGridLength-2,2*miningGridLength-1);
g.setColor(0x00BBBBBB);
g.fillRect(miningMapX bombMapW*miningGridLength 4 2*(paintX-1),
miningMapY 8*miningGridLength 4 2*(paintY-1),12,17);
g.setColor(0x00FFFFFF);
g.drawRect(miningMapX bombMapW*miningGridLength 4 2*(paintX-1),
miningMapY 8*miningGridLength 4 2*(paintY-1),12,17);
}
protected void paintPlayer(Graphics g,boolean isPlayer1){
if(isPlayer1)//在棋盘外围画出玩家颜色的外框
g.setColor(0x000000FF);
else
g.setColor(0x00FF0000);
for(int i=1;i<=5;i ){
g.drawRect(miningMapX-i,miningMapY-i,miningMapLength 2*i,miningMapLength 2*i);
}
if(isPlayer1)//在信息框中画出代表玩家的旗帜
g.drawImage(player1TurnImg,miningMapX (bombMapW 1)*miningGridLength 1,
miningMapY 11*miningGridLength,Graphics.HCENTER|Graphics.VCENTER);
else
g.drawImage(player2TurnImg,miningMapX (bombMapW 1)*miningGridLength 1,
miningMapY 11*miningGridLength,Graphics.HCENTER|Graphics.VCENTER);
}
public void paintMiningMap(Graphics g){
for(int i=0;i<bombMapH;i ){
for(int j=0;j<bombMapW;j ){//根据每个Bomb对象中的变量值画出不同的图片
if(!bombs[i paintY 1][j paintX 1].hasFound){
g.drawImage(unFoundGroundImg,miningMapX j*miningGridLength,
miningMapY i*miningGridLength,Graphics.TOP|Graphics.LEFT);
}
else {
if(!bombs[i paintY 1][j paintX 1].isBomb){
switch(bombs[i paintY 1][j paintX 1].bombaround){
case 0:
g.drawImage(foundGroundImg,miningMapX j*miningGridLength,
miningMapY i*miningGridLength,Graphics.TOP|Graphics.LEFT);
break;
case 1:
g.drawImage(bomb1Img,miningMapX j*miningGridLength,
miningMapY i*miningGridLength,Graphics.TOP|Graphics.LEFT);
break;
case 2:
g.drawImage(bomb2Img,miningMapX j*miningGridLength,

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!