📄 tankcanvas.java
字号:
import java.io.IOException;import javax.microedition.lcdui.*;import javax.microedition.lcdui.game.GameCanvas;public class TankCanvas extends Canvas implements Runnable { private int gameSubStatus = 1; private int gameState = 1; private int gameSelect = 1; private int SplashCnt = 0; private int screenWidth; private int screenHeight; private Image imgTankEnemy, imgTankPlayer, imgTitle; private int fadeColor; private int fontHeight; private int title_y, title_h; private int title_x; private GameMidlet gameMidlet; private boolean controlMenu; public TankCanvas(GameMidlet gameMidlet) { // super(true); this.gameMidlet = gameMidlet; screenWidth = getWidth(); screenHeight = getHeight(); controlMenu = true; } public void paint(Graphics g) { switch (gameState) { case 1: drawSplash(g); break; case 2: drawAnmi(g); break; case 3: drawMenu(g); break; } } private void drawAnmi(Graphics g) { try { switch (gameSubStatus) { case 1: g.setColor(0x000000); g.fillRect(0, 0, screenWidth, screenHeight); imgTankEnemy = Image.createImage("/tank_enemy.png"); fadeColor = 0x0; gameSubStatus++; break; case 2: g.setColor(fadeColor, fadeColor, fadeColor); // g.setFont(font); fontHeight = g.getFont().getHeight(); g.drawString("Scau's Tank Online", screenWidth / 2, (screenHeight - imgTankEnemy.getHeight() - fontHeight) / 2 - 3, g.TOP | g.HCENTER); if (fadeColor < 0xf0) { fadeColor += 16; } else { gameSubStatus++; title_y = imgTankEnemy.getHeight() / 2; title_h = 0; } break; case 3: g.setColor(0xffffff); g.fillRect(0, (screenHeight + fontHeight) / 2 - title_h, screenWidth, title_h * 2); if (title_h < (imgTankEnemy.getHeight() / 2)) { title_h += 4; } else { gameSubStatus++; title_x = -imgTankEnemy.getWidth(); } break; case 4: g.setColor(0xffffff); g.fillRect(0, (screenHeight - imgTankEnemy.getHeight() + fontHeight) / 2, screenWidth, imgTankEnemy.getHeight()); g.drawImage(imgTankEnemy, title_x, (screenHeight - imgTankEnemy.getHeight() + fontHeight) / 2, g.TOP | g.LEFT); if (title_x < 0) { title_x += 15; } else { gameSubStatus++; imgTankPlayer = Image.createImage("/tank_player.png"); title_x = screenWidth + imgTankPlayer.getWidth(); } break; case 5: g.setColor(0xffffff); g.fillRect(0, (screenHeight - imgTankEnemy.getHeight() + fontHeight) / 2, screenWidth, imgTankPlayer.getHeight()); g.drawImage(imgTankEnemy, 0, (screenHeight - imgTankEnemy.getHeight() + fontHeight) / 2, g.TOP | g.LEFT); g.drawImage(imgTankPlayer, title_x, (screenHeight - imgTankPlayer.getHeight() + fontHeight) / 2, g.TOP | g.LEFT); if (title_x >= (screenWidth - imgTankPlayer.getWidth())) { title_x -= 30; } else { gameSubStatus++; g.setColor(0x00); g.fillRect(0, 0, screenWidth, (screenHeight - imgTankPlayer.getHeight() + fontHeight) / 2 - 1); } break; case 6: g.setColor(fadeColor, fadeColor, fadeColor); // g.setFont(font); g.drawString("Welcome To Here", screenWidth / 2, (screenHeight - imgTankPlayer.getHeight() - fontHeight) / 2 - 3, g.TOP | g.HCENTER); if (fadeColor > 0) { fadeColor -= 12; } else { title_h = 0; gameSubStatus++; } break; case 7: imgTankEnemy = null; imgTankPlayer = null; gameSubStatus = 1; gameState = 3; default: break; } } catch (IOException ex) { ex.printStackTrace(); } } private void drawMenu(Graphics g) { switch (gameSubStatus) { case 1: g.setColor(0x0); g.fillRect(0, 0, screenWidth, screenHeight); try { imgTitle = Image.createImage("/title.png"); } catch (Exception e) { } gameSubStatus++; title_y = imgTitle.getHeight() / 2; title_h = 0; break; case 2: g.setColor(0x0); g.fillRect(0, 0, screenWidth, screenHeight); g.setColor(0xffffff); g.fillRect(0, (screenHeight - imgTitle.getHeight()) / 6 + title_y, (screenWidth - imgTitle.getWidth()) / 2, title_h); g.fillRect((screenWidth + imgTitle.getWidth()) / 2, (screenHeight - imgTitle.getHeight()) / 6 + title_y, (screenWidth - imgTitle.getWidth()) / 2, title_h); g.translate((screenWidth - imgTitle.getWidth()) / 2, (screenHeight - imgTitle.getHeight()) / 6); g.setClip(0, title_y, imgTitle.getWidth(), title_h); g.drawImage(imgTitle, 0, 0, g.TOP | g.LEFT); if (title_h < imgTitle.getHeight()) { title_y -= 2; title_h += 4; } else { gameSubStatus++; } break; case 3: g.setColor(0x0); g.fillRect(0, 0, screenWidth, screenHeight); g.setColor(0xffffff); g.fillRect(0, (screenHeight - imgTitle.getHeight()) / 6 + title_y, (screenWidth - imgTitle.getWidth()) / 2, title_h); g.fillRect((screenWidth + imgTitle.getWidth()) / 2, (screenHeight - imgTitle.getHeight()) / 6 + title_y, (screenWidth - imgTitle.getWidth()) / 2, title_h); g.drawImage(imgTitle, (screenWidth - imgTitle.getWidth()) / 2, (screenHeight - imgTitle.getHeight()) / 6, g.TOP | g.LEFT); g.setColor(0x00, 0x00, 0x00); g.fillRect(screenWidth / 2 - 50, (screenHeight - imgTitle.getHeight()) / 3 + imgTitle.getHeight(), 100, fontHeight * 3); // g.setFont(font); switch (gameSelect) { case 1: g.setColor(0xfe, 0x3f, 0x00); g.drawString("Start", screenWidth / 2, (screenHeight - imgTitle.getHeight()) / 3 + imgTitle.getHeight(), g.TOP | g.HCENTER); g.setColor(0x00, 0xfe, 0xfe); g.drawString("Setting", screenWidth / 2, (screenHeight - imgTitle.getHeight()) / 3 + imgTitle.getHeight() + fontHeight, g.TOP | g.HCENTER); g.drawString("About", screenWidth / 2, (screenHeight - imgTitle.getHeight()) / 3 + imgTitle.getHeight() + 2 * fontHeight, g.TOP | g.HCENTER); g.drawString("Online", screenWidth / 2, (screenHeight - imgTitle.getHeight()) / 3 + imgTitle.getHeight() + 3 * fontHeight, g.TOP | g.HCENTER); g.drawString("OnlineVS", screenWidth / 2, (screenHeight - imgTitle.getHeight()) / 3 + imgTitle.getHeight() + 4 * fontHeight, g.TOP | g.HCENTER); g.drawString("Exit", screenWidth / 2, (screenHeight - imgTitle.getHeight()) / 3 + imgTitle.getHeight() + 5 * fontHeight, g.TOP | g.HCENTER); break; case 2: g.setColor(0x00, 0xfe, 0xfe); g.drawString("Start", screenWidth / 2, (screenHeight - imgTitle.getHeight()) / 3 + imgTitle.getHeight(), g.TOP | g.HCENTER); g.setColor(0xfe, 0x3f, 0x00); g.drawString("Setting", screenWidth / 2, (screenHeight - imgTitle.getHeight()) / 3 + imgTitle.getHeight() + fontHeight, g.TOP | g.HCENTER); g.setColor(0x00, 0xfe, 0xfe); g.drawString("About", screenWidth / 2, (screenHeight - imgTitle.getHeight()) / 3 + imgTitle.getHeight() + 2 * fontHeight, g.TOP | g.HCENTER); g.drawString("Online", screenWidth / 2, (screenHeight - imgTitle.getHeight()) / 3 + imgTitle.getHeight() + 3 * fontHeight, g.TOP | g.HCENTER);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -