📄 westgamecanvas.java~52~
字号:
mapX = data.getWorldMessage()[0];
mapY = data.getWorldMessage()[1];
gameState = 0;//0,正常游戏状态 1,切换命的状态 2gameover
markNum = 0x2000000;
mark = 0;
//------------------------------------------------------------->
}
else if (mark == 0)
{
mark++;
}
System.out.println("BBBBBBBBBBBBBB");
}
else if (markNum == 0x8000000)
{
int sum = 0;
for (int i = 0; i < 10; i++)
sum += this.rsNameScore[5][i];
this.nameOk = sum > 0 ? true : false;
if (this.menuSubTxtDy != 0)
this.menuChangeName(0, this.menuSubTxtDy);
System.out.println("CCCCCCCCCCC");
}
}
private void menuPaint(Graphics g)
{
if (( 0xff000000 & markNum ) == 0x4000000)
{
switch (mark)
{
case 0:
g.drawImage(imgMenuLoad[9], 31, 77, 0);
break;
case 1:
g.drawImage(imgMenuLoad[0], 0, 0, 0);
g.drawImage(imgMenuLoad[1], 30, xyCartoon[0], 0);
g.drawImage(imgMenuLoad[2], 30, xyCartoon[1], 0);
g.drawImage(imgMenu[27], xyCartoon[2], 100, 0);
g.drawImage(imgMenu[28], xyCartoon[3], 140, 0);
break;
case 2:
// g.drawImage(imgMenuLoad[5], 85, 135, 0);
break;
default:
g.drawImage(imgMenuLoad[0], 0, 0, 0);
g.drawImage(imgMenuLoad[6], 35, 69, 0);//画START
if (mark == 5)
{
g.drawImage(imgMenuLoad[7], 60, 80, 0);
g.setColor(0Xffffff);
g.drawString("press 5 to start.", 60, 120, 0);
}
else
g.drawImage(imgMenuLoad[8], 70, 70, 0);
break;
}
}
//菜单部分
if (( markNum & 0xff000000 ) == 0)
{
//主菜单绘制
if (( markNum & 0xf0000 ) == 0)
{
int startY = 55;
int startX, imgIdx;
g.drawImage(imgMenu[0], 0, 0, 0);
g.drawImage(imgMenu[27], 5, 15, 0);
g.drawImage(imgMenu[28], 95, 15, 0);
g.drawImage(imgMenu[29], 110, 25, 0);
for (int i = 1; i < 8; i++)
{
if (i == 1 && ( markNum & 0x800000 ) > 0)//back选项
imgIdx = ( markNum == 0x800000 ) ? 16 : 8;
else
//其它选项
imgIdx = i
+ ( ( ( 0xff & ( markNum >> 8 ) ) == i - 1 ) ? 8
: 0 );
startX = ( ( screenWidth - imgMenu[imgIdx].getWidth() ) >> 1 ) - 22;
g.drawImage(imgMenu[imgIdx], startX, startY, 0);
startY += 18;
}
}
else
{
g.drawImage(imgMenu[17], 0, 0, 0);
//自菜单绘制
int idUse = ( ( markNum & 0xf0000 ) >> 16 ) + 9;
g.drawImage(imgMenu[idUse], ( screenWidth - imgMenu[idUse]
.getWidth() ) / 2 - 10, 25, 0);
switch (markNum & 0xf0000)
{
case 0x20000://选项
g.drawImage(imgMenu[19], 70, 80, 0);
g.drawImage(imgMenu[21 - ( ( markNum & 0x100 ) == 0 ? 1
: 0 )], 90, 120, 0);
g.drawImage(imgMenu[23 - ( ( markNum & 0x100 ) == 0 ? 0
: 1 )], 90, 140, 0);
break;
case 0x40000://高分榜
this.menuDrawSubText(g, this.txtScoreInfo, 18, 158, 90);
break;
case 0x30000://关于
case 0x50000://帮助
this.menuDrawChinaStr(g);
break;
}
}
}
//loading部分
if (markNum == 0x1000000)
{
g.setColor(0);
g.fillRect(0, 0, 176, 208);
g.drawImage(imgMenu[24], 100, 190, 0);
g.setColor(0xffff);
g.drawString("AAAAAAAAa",0,0,20);
}
else if (markNum == 0x8000000)
{
g.drawImage(imgMenu[17], 0, 0, 0);
this.menuDrawSubText(g, this.txtNameInfo, 53, 123, 80);
g.setClip(0, 0, screenWidth, screenHeight);
//下划线的起始位置
int ix = 54;
for (int i = 0; i < 10; i++)
ix += MENU_SUB_TEXT_W;
}
if (!( ( 0xff000000 & markNum ) == 0x4000000 && mark == 0 )
&& markNum != 0x1000000)
g.drawImage(imgMenu[25], 20, 190, 0);
}
void menuKeyPress(int keyCode)
{
if (( 0xff000000 & markNum ) == 0x4000000 && mark == 5
&& keyCode == KEY_NUM5)
{
mark = 6;
}
//菜单部分
if (( 0xff000000 & markNum ) == 0)
{
switch (keyCode)
{
case KEY_NUM2:
case KEYCODE_DIRECT_UP:
if (( ( 0xff0000 & markNum ) == 0 //是主菜单状态
|| ( 0x820000 & markNum ) > 0 )//是主菜单可以返回游戏 或者
// 是选项菜单
&& ( 0xff00 & markNum ) > 0)//未到达最顶端
markNum -= 0x100;
break;
case KEY_NUM8:
case KEYCODE_DIRECT_DOWN:
if (( ( ( 0xff0000 & markNum ) == 0 || ( 0x800000 & markNum ) > 0 ) && ( 0xff00 & markNum ) < 0x600 )//未到达主菜单下端
|| ( ( 0x20000 & markNum ) > 0 && ( 0xff00 & markNum ) < 0x100 ))//未到达选项菜单下端
markNum += 0x100;
break;
case KEY_NUM5:
case KEYCODE_DIRECT_FIRE:
switch (markNum)
{
case 0x600://退出游戏
this.running = false;
break;
case 0x800600://从可以返回游戏的菜单,退出到新游戏的菜单
markNum &= 0;
this.saveLevel = gameLevel;
break;
case 0x800000://返回游戏
markNum = 0x2000000;//继续游戏
this.soundStop();
break;
default://其它状态
if (markNum == 0 || ( 0xfff00 & markNum ) == 0x100)
{
isContinue=(markNum == 0)?false:true;
markNum = 0x08000000;//输入名字状态
this.menuChangeName(0, 0);
}
else if (( 0xf0000 & markNum ) == 0)
{//当前是主菜单
int markuse = markNum & 0xf00;
markuse <<= 8;
markNum &= 0xfff0f0ff;
markNum |= markuse;
//子菜单内容处理
switch (markNum&0xf0000)
{
case 0x40000://高分榜
this.menuScoreTextHandle();
break;
case 0x30000://关于
this.menuSplitStringForVector(this.menuSubStr[1]);
break;
case 0x50000://帮助
this.menuSplitStringForVector(this.menuSubStr[0]);
break;
}
}
else if (( 0x20000 & markNum ) > 0)
{//当前是选项菜单
this.soundOn = ( 0x100 & markNum ) == 0 ? true
: false;
}
break;
}
break;
case KEYCODE_RIGHT_SOFTKEY:
case KEYCODE_LEFT_SOFTKEY:
if (( 0xf0000 & markNum ) != 0)
{
int markUse = markNum & 0xf0000;
markUse = markUse >> 8;
markNum = markNum & 0xfff0f0ff;
markNum = markNum | markUse;
}
break;
}
}
else if (markNum == 0x8000000)
{
switch (keyCode)
{
case KEY_NUM2:
case KEYCODE_DIRECT_UP:
this.menuSubTxtDy = -1;
break;
case KEY_NUM8:
case KEYCODE_DIRECT_DOWN:
this.menuSubTxtDy = 1;
break;
case KEY_NUM4:
case KEYCODE_DIRECT_LEFT:
this.menuChangeName(-1, 0);
break;
case KEY_NUM6:
case KEYCODE_DIRECT_RIGHT:
this.menuChangeName(1, 0);
break;
case KEY_NUM5:
case KEYCODE_DIRECT_FIRE:
if (nameOk)
{//开始新游戏
hp = 100;//主角的生命值,等于0时为死亡状态
score = 0;
gameLevel = this.isContinue? this.saveLevel
: 1;
life = 3;
this.soundStop();
markNum = 0x1000000;//loading
this.mark &= 0;
}
break;
case KEYCODE_RIGHT_SOFTKEY:
case KEYCODE_LEFT_SOFTKEY:
markNum &= 0;
break;
}
}
}
private boolean isContinue=false;
private void mapMove()
{
int k = 0;
if (mapY > 0)
{
startI = 0;
}
else
{
startI = ( -mapY ) >> 5;
}
endI = ( -mapY + screenHeight >> 5 ) + 1;
if (endI < 0)
{
endI = 0;
}
else if (endI > data.getWorld().length - 1)
{
endI = data.getWorld().length - 1;
}
if (endI > startI)
{
startJ = ( -mapX ) >> 5;
if (startJ < 0)
startJ = 0;
endJ = ( -mapX + screenHeight >> 5 ) + 1;
if (endJ >= data.getWorld()[0].length)
{
endJ = data.getWorld()[0].length - 1;
}
xStartUse = xStart = ( startJ << 5 ) + mapX;
yStart = ( startI << 5 ) + mapY;
for (int j = startI; j <= endI; j++)
{
for (int i = startJ; i < endJ && k < blockDraw[0].length - 1; i++)
{
if (data.getWorld()[j][i] != 0)
{
blockDraw[0][k] = data.getWorld()[j][i];
blockDraw[1][k] = xStartUse;
blockDraw[2][k] = yStart;
k++;
}
xStartUse += 32;
}
yStart += 32;
xStartUse = xStart;
}
}
blockDraw[0][k] = 0;
//--------------------------------------------------------<1
xMid = mapX * 2 / 5 % screenWidth;
xClose = mapX % screenWidth;
mapId = ( mapY - drawStart ) / screenHeight;
yFar = ( mapY - drawStart ) % screenHeight;
yMid = yFar + data.getBackMessagess()[0];
//----------------------------------------------------------1>
}
private void mapDraw(Graphics g)
{
//---------------------------------------------------------<1
drawId(g, 0, 0, yFar);
if (yFar != 0)
{
mapId++;
drawId(g, 0, 0, yFar - screenHeight);
mapId--;
}
drawLayer(g, 1, xMid, yMid);
drawLayer(g, 2, xClose, yMid + data.getBackMessagess()[1]);
//----------------------------------------------------------1>
for (int i = 0; i < blockDraw[0].length && blockDraw[0][i] != 0; i++)
{
g.drawImage(GameDataSimple.imgMap[blockDraw[0][i]],
blockDraw[1][i], blockDraw[2][i], 0);
//TODO网格
// g.setColor(0);
// g.drawLine(blockDraw[1][i], blockDraw[2][i], blockDraw[1][i],
// blockDraw[2][i] + 32);
// g.drawLine(blockDraw[1][i], blockDraw[2][i], blockDraw[1][i] + 32,
// blockDraw[2][i]);
//---------------->
}
}
/**
* 绘制一层背景-------------------------1
*
* @param g
* @param id
* 0:远景 1:中景 2:近景
* @param xDraw
* 层的x坐标
* @param yDraw
* 层的y坐标
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -