📄 gamecanvas.java
字号:
}
break;
case 6://退出游戏
break;
}
if (keyPre=true && keyPreTime>1){
keyPre=false;
}else if(keyPre){
keyPreTime++;
}
if (!gameStart){
gameStart=true;
}
}
/**
* paint
*/
Font font=null;
int fontHeight=0;
public void paint(Graphics g) {
if (gameStart){
switch(status){
case 0:
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
case 1://主菜单
switch(g_status){
case 1:
g.setColor(255,255,255);
g.fillRect(0,0,screenWidth,screenHeight);
if (mainMenuImg!=null){
g.drawImage(mainMenuImg,0,0,Tools.GRAPHCS_TOP_LEFT);
}
if (cursorImg!=null){
g.drawImage(cursorImg,cursorX1[m_status] ,cursorY[m_status], Tools.GRAPHCS_TOP_LEFT);
g.drawImage(cursorImg,cursorX2[m_status] ,cursorY[m_status], Tools.GRAPHCS_TOP_LEFT);
}
break;
}
break;
case 2://游戏中
switch(g_status){
case 0:
loading(g);
break;
case 1:
gameRunDraw(g);
break;
case 2://菜单弹出时
case 3:
case 4:
gameRunDraw(g);
pupMenu1Draw(g);
break;
case 5:
switch(p_status){
case 1:
if (gameOverImg!=null){
g.drawImage(gameOverImg, 0,0, Tools.GRAPHCS_TOP_LEFT);
}
}
break;
case 6:
switch(p_status){
case 1:
case 2:
case 3:
gameRunDraw(g);
pupMenu1Draw(g);
pupMenu2Draw(g);
break;
}
break;
}
break;
case 3:
switch(g_status){
case 1://显示列表
g.setColor(176,221,255);
g.fillRect(0,0,screenWidth,screenHeight);
if (highScoreImg!=null){
g.drawImage(highScoreImg,0,0, Tools.GRAPHCS_TOP_LEFT);
}
g.setColor(255,255,255);
g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL));
if (playerListNum==0) {
//g.drawString("目前没有排行记录!",screenWidth/2,screenHeight/2,Graphics.TOP|Graphics.HCENTER);
} else{
for (int i=0;i<highScoreRms.plays.length;i++){
g.drawString(highScoreRms.plays[i],27,33+i*16,Tools.GRAPHCS_TOP_LEFT);
g.drawString(""+highScoreRms.points[i],72,33+i*16,Tools.GRAPHCS_TOP_LEFT);
}
}
break;
}
break;
case 4:
switch(g_status){
case 1:
g.setColor(176,221,255);
g.fillRect(0,0,screenWidth,screenHeight);
if(saveBgImg!=null){
g.drawImage(saveBgImg, 0,0, Tools.GRAPHCS_TOP_LEFT);
}
g.setColor(250,0,0);
g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL));
if(DossierRms.dossierIdList==null){
g.drawString("目前没有存档记录!",screenWidth/2,screenHeight/2,Graphics.TOP|Graphics.HCENTER);
} else{
for (int i=0;i<DossierRms.dossierIdList.length;i++){
g.drawImage(saveImg[i], screenWidth/2, 20+i*24, Graphics.TOP|Graphics.HCENTER);
}
g.drawImage(saveSelImg, screenWidth/2, 20+m_status*24, Graphics.TOP|Graphics.HCENTER);
}
break;
case 2:
loading(g);
break;
}
break;
case 5:
switch(g_status){
case -1:
font = g.getFont();
fontHeight=font.getHeight();
g_status=0;
break;
case 1:
g.setColor(255,255,255);
g.fillRect(0,0, getWidth(),getHeight());
g.setColor(176,221,255);
g.fillRect(0,0,screenWidth,screenHeight);
g.setColor(0,0,0);
//把字符串转换为字符数据
char[] data = new char[howplayString.length()];
howplayString.getChars(0, howplayString.length(), data, 0);
int lineWidth = 0;
int charWidth = 0;
int y = 0;
int x = 0;
char ch;
for(int ccnt=0; ccnt < data.length; ccnt++) {
ch = data[ccnt];
//测量要绘制的字符
charWidth = font.charWidth(ch);
lineWidth = lineWidth + charWidth;
//看是否需要新的行
if (lineWidth > screenWidth) {
y = y + fontHeight;
lineWidth = 0;
x = 0;
}
//绘制字符
if(p_status+y>=0 && p_status+y<screenHeight){
g.drawChar(ch, x, p_status+y,Graphics.TOP|Graphics.LEFT);
}
x = lineWidth;
}
break;
}
break;
}
}
}
private void gameRunDraw(Graphics g){
g.setColor(255,255,255);
g.fillRect(0,0,screenWidth,screenHeight);
if (bgImg!=null) g.drawImage(bgImg, 0,0, 20);
grids.draw(g);
if (gridSelImg!=null) g.drawImage(gridSelImg, 6+curx*16, cury*16, Tools.GRAPHCS_TOP_LEFT);
int j=0;
for (int i=Tools.setNumerics(totalCursor);i>=0;i--){
if(numberImg[Tools.Numerics[i]]!=null){
g.drawImage(numberImg[Tools.Numerics[i]], 5+j*16,112, 20);
j++;
}
}
g.setColor(255,255,241);
g.fillRect(123, 6, 2, 110-(grids.totalWaitTime-grids.passWaitTime)*1000/grids.totalWaitTime*110/1000);
}
private void pupMenu1Draw(Graphics g){
if (pupMenuImg!=null){
g.drawImage(pupMenuImg, i_status, 19, Tools.GRAPHCS_TOP_LEFT);
}
if(pupSelImg!=null){
g.drawImage(pupSelImg, i_status,20+m_status*22, Tools.GRAPHCS_TOP_LEFT);
}
}
private void pupMenu2Draw(Graphics g){
if (pupMenu2Img!=null){
g.drawImage(pupMenu2Img, j_status, 19, Tools.GRAPHCS_TOP_LEFT);
}
if(pupSelImg!=null){
g.drawImage(pupSelImg, j_status,20+n_status*22, Tools.GRAPHCS_TOP_LEFT);
}
}
private void readDossierRms(int dosId){
DossierRms.readDossier(dosId);
}
/**
* Called when a key is pressed.
*/
private boolean keyPre=false;
int key_Code;
int key_GameCode;
int keyPreTime=0;
protected synchronized void keyPressed(int keyCode){
key_GameCode = getGameAction(keyCode);
key_Code=keyCode;
keyPre=true;
keyPreTime=0;
}
protected synchronized void keyReleased(int keyCode){
// keyPre=false;
}
private void loadGame(){
if (bgImg==null){
try{
bgImg=Image.createImage("/res/backGround.png");
}catch(Exception e){}
}
if (gridSelImg==null){
try{
gridSelImg=Image.createImage("/res/gridSel.png");
}catch(Exception e){}
}
numberImg=new Image[10];
for(int i=0;i<10;i++){
if (numberImg[i]==null){
try{
numberImg[i]=Image.createImage(numberPng[i]);
}catch(Exception e){
System.out.println("sfkjicxvx");
}
}
}
}
private void loading(Graphics g){
g.setColor(22,152,116);
g.fillRect(0,0, screenWidth,screenHeight);
g.setColor(217, 255,245);
g.drawString("Loading...", screenWidth/2, screenHeight/2, Graphics.TOP|Graphics.HCENTER);
}
private void exit(){
PlumberMidlet.mainMidlet.notifyDestroyed();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -