📄 gameoptions.java
字号:
return;
}
Graphics g=getGraphics();
//stage
DrawTools.XDrawImage(g,m_stageWordImage,STAGE_POS_X,STAGE_POS_Y,
0,0,STAGE_WORD_WIDTH,STAGE_WORD_HEIGHT);
//get the tens digit
int tenDigit=m_currentStage/10;
int indDigit=m_currentStage%10;
//draw digit
DrawTools.XDrawImage(g,m_stageNumImage,STAGE_POS_X+STAGE_NUM_GAP,STAGE_POS_Y,
tenDigit*STAGE_NUM_WIDTH,0,STAGE_NUM_WIDTH,STAGE_NUM_HEIGHT);
DrawTools.XDrawImage(g,m_stageNumImage,STAGE_POS_X+STAGE_NUM_GAP+STAGE_NUM_WIDTH,STAGE_POS_Y,
indDigit*STAGE_NUM_WIDTH,0,STAGE_NUM_WIDTH,STAGE_NUM_HEIGHT);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void displayPoints(){
try {
if(null== m_enemyImage){
return;
}
int level=GameLogic.GAME_LEVEL_EASY;
//draw rect
//fill rect
//draw seperate line
//draw tank icons
//draw points
Graphics g=getGraphics();
g.setColor(2,58,0);
g.fillRect(REGION_X,REGION_Y,REGION_WIDTH,REGION_HEIGHT);
//green
g.setColor(14,151,12);
g.drawRect(REGION_X,REGION_Y,REGION_WIDTH,REGION_HEIGHT);
g.setStrokeStyle(Graphics.DOTTED);
g.drawLine(SEPERATE_LINE_X,SEPERATE_LINE_Y,SEPERATE_LINE_X+SEPERATE_LINE_WIDTH,
SEPERATE_LINE_Y);
//draw tank icons
g.setColor(255,255,255);
g.drawString("击毁坦克",39,114,DrawTools.ANCHOR_TOPLEFT);
g.drawString("获得积分",147,114,DrawTools.ANCHOR_TOPLEFT);
DrawTools.XDrawImage(g,m_enemyImage,38,127,0,0,20,20);
DrawTools.XDrawImage(g,m_enemyImage,38,147,0,20,20,20);
DrawTools.XDrawImage(g,m_enemyImage,38,167,0,40,20,20);
DrawTools.XDrawImage(g,m_bottomIconImage,141,198,0,0,16,14);
//draw 1x 2x 3x
g.setColor(255,255,255);
g.drawString("1",60,136,DrawTools.ANCHOR_TOPLEFT);
g.drawString("2",60,156,DrawTools.ANCHOR_TOPLEFT);
g.drawString("3",60,176,DrawTools.ANCHOR_TOPLEFT);
g.drawString("x",69,136,DrawTools.ANCHOR_TOPLEFT);
g.drawString("x",69,156,DrawTools.ANCHOR_TOPLEFT);
g.drawString("x",69,176,DrawTools.ANCHOR_TOPLEFT);
//draw points
String enemyTankOne=Integer.toString(GameLogic.getEnemyTankOneCounts());
String enemyTankTwo=Integer.toString(GameLogic.getEnemyTankTwoCounts());
String enemyTankThree=Integer.toString(GameLogic.getEnemyTankThreeCounts());
g.drawString(enemyTankOne,79,136,DrawTools.ANCHOR_TOPLEFT);
g.drawString(enemyTankTwo,79,156,DrawTools.ANCHOR_TOPLEFT);
g.drawString(enemyTankThree,79,176,DrawTools.ANCHOR_TOPLEFT);
String enemyTankOnePoints = Integer.toString(GameLogic.POINTS_IN_GAME[
GameLogic.EVENT_ENEMY_TANK_TYPE1_DESTROYED][level] *
GameLogic.getEnemyTankOneCounts());
String enemyTankTwoPoints = Integer.toString(GameLogic.POINTS_IN_GAME[
GameLogic.EVENT_ENEMY_TANK_TYPE2_DESTROYED][level] *
GameLogic.getEnemyTankTwoCounts());
String enemyTankThreePoints = Integer.toString(GameLogic.POINTS_IN_GAME[
GameLogic.EVENT_ENEMY_TANK_TYPE3_DESTROYED][level] *
GameLogic.getEnemyTankThreeCounts());
String totalPoints = Integer.toString(GameLogic.getTotalPoints());
g.drawString(enemyTankOnePoints, 158, 136, DrawTools.ANCHOR_TOPLEFT);
g.drawString(enemyTankTwoPoints, 158, 156, DrawTools.ANCHOR_TOPLEFT);
g.drawString(enemyTankThreePoints, 158, 176, DrawTools.ANCHOR_TOPLEFT);
g.drawString(totalPoints, 165, 201, DrawTools.ANCHOR_TOPLEFT);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void loadResource() {
try {
//background
createBackground();
//LSK/RSK button
createButton();
createStageAndPoints();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public static void pause(){
m_threadAlive=true;
}
public void run() {
if(!m_threadAlive){
return;
}
Graphics g = getGraphics();
g.setColor(255, 255, 255); //绘图色为白色 清屏
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0, 0, 0); //绘图色变成黑色,用来画字符串
input();
if(null!=m_layerManager){
m_layerManager.paint(g, 0, 0);
}
displayStage();
displayPoints();
flushGraphics();
}
private void input(){
int keyState = getKeyStates();
String cmd=null;
if((keyState & LEFT_PRESSED) != 0){
}else if((keyState & RIGHT_PRESSED) != 0){
}else if((keyState & UP_PRESSED) != 0){
}else if((keyState & DOWN_PRESSED) != 0){
}
}
public static void stop(){
if(m_layerManager==null){
return;
}
//release all the resources
m_threadAlive=false;
releaseBackground();
releaseButton();
releaseStageAndPoints();
for (int i = 0; i < m_layerManager.getSize(); i++) {
Layer layer = m_layerManager.getLayerAt(i);
if (null != layer) {
m_layerManager.remove(layer);
layer = null;
}
}
m_layerManager=null;
instance=null;
}
protected void keyPressed(int keyCode){
// System.out.println(keyCode);
String cmd=null;
//1.if(current stage>RMS record) refresh the RMS record;refresh the GameLogic record;
//2.if(current stage<=RMS record) only refresh the GameLogic record;
if(DrawTools.KEY_CODE_LSK==keyCode||DrawTools.KEY_CODE_SELECT==keyCode){
cmd="continue";
if (m_currentRecord == 0) {
}else{
Appointment app=RMS.getRecord(GameLogic.RMS_NAME,m_currentRecord);
if(app.m_curStage<=m_currentStage + 1){
app.m_curStage=m_currentStage + 1;
}
app.m_curGamePoints=m_gamePoints;
// RMS.setRecord(GameLogic.RMS_NAME,m_currentRecord,app);
app=null;
}
//update the RMS infomation needed by GameLogic
GameLogic.updateGameInfo(m_currentRecord,-1,m_gamePoints,-1,-1,-1);
stop();
Navigator.flow(cmd);
}else if(DrawTools.KEY_CODE_RSK==keyCode){
cmd="factory";
TankFactoryScreen.setCurrentRecord(m_currentRecord);
stop();
Navigator.flow(cmd);
}
}
}
class GameFailedScreen extends GameCanvas {
private static GameFailedScreen instance;
private static LayerManager m_layerManager;
private static boolean m_threadAlive;
private int m_currentMenuButtonIndex;
//button sprite
private static Sprite[] m_buttonSprite;
private static Image m_buttonImage;
//menu button
private static Image m_menuButtonImg; //menu_button.png
private static Image m_menuWordImg; //
private static Sprite[] m_menuWordImgSprite;
private static Sprite[] m_menuButtonImgSprite;
//图片资源
private static Image m_backgroundImg; //背景
private static Sprite m_backgroundImgSprite;
private static Image m_panel; //上下PANEL
private static Sprite[] m_panelSprite;
private static Image m_title;
//constant macro
private final static int MENU_BUTTON_COUNTS=2;
//width/height
private final static int GAME_FAILED_WIDTH=149;
private final static int GAME_FAILED_HEIGHT=43;
//positon(x,y)
private final static int MENU_BUTTON_X=63;
private final static int MENU_BUTTON_Y=186;
private final static int GAME_FAILED_X=45;
private final static int GAME_FAILED_Y=104;
private final static int[] chosenWordIndex = {
DrawTools.MENU_BUTTON_WORD_INDEX_READ_CHOSEN,
DrawTools.MENU_BUTTON_WORD_INDEX_BACKMENU_CHOSEN
};
private final static int[] unchosenWordIndex = {
DrawTools.MENU_BUTTON_WORD_INDEX_READ_UNCHOSEN,
DrawTools.MENU_BUTTON_WORD_INDEX_BACKMENU_UNCHOSEN
};
synchronized public static GameFailedScreen getInstance() {
if (instance == null)
instance = new GameFailedScreen();
return instance;
}
private GameFailedScreen() {
super(false);
m_threadAlive=true;
m_layerManager = new LayerManager();
setFullScreenMode(true);
m_currentMenuButtonIndex=0;
loadResource();
}
private static void releaseTitle(){
try {
m_title=null;
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void createTitle(){
try {
m_title=Image.createImage("/tank/map_res/game_failed.png");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private static void releaseButton(){
try {
m_buttonImage=null;
for (int i = 0; i < DrawTools.BUTTON_SPRITE_COUNTS; i++) {
m_layerManager.remove(m_buttonSprite[i]);
m_buttonSprite[i]=null;
}
m_buttonSprite=null;
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void createButton() {
try {
m_buttonImage = Image.createImage("/tank/map_res/factory_bottom_word.png");
//button,确定/返回
m_buttonSprite = new Sprite[DrawTools.BUTTON_SPRITE_COUNTS];
for (int i = 0; i < DrawTools.BUTTON_SPRITE_COUNTS; i++) {
m_buttonSprite[i] = new Sprite(m_buttonImage, DrawTools.BUTTON_IMAGE_WIDTH,
DrawTools.BUTTON_IMAGE_HEIGHT);
m_layerManager.insert(m_buttonSprite[i], 0);
}
m_buttonSprite[1].setVisible(false);
int []buttonIndex={DrawTools.BUTTON_INDEX_CONFIRM,
DrawTools.BUTTON_INDEX_EXIT};
DrawTools.displayButton(m_buttonSprite,2,buttonIndex);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private static void releaseBackground(){
try {
m_backgroundImg = null;
m_panel = null;
if (null != m_backgroundImgSprite) {
m_layerManager.remove(m_backgroundImgSprite);
m_backgroundImgSprite = null;
}
for (int i = 0; i < DrawTools.PANEL_COUNTS; i++) {
if (null != m_panelSprite && null != m_panelSprite[i]) {
m_layerManager.remove(m_panelSprite[i]);
m_panelSprite[i] = null;
}
}
m_panelSprite=null;
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void createBackground() {
try {
m_backgroundImg = Image.createImage("/tank/map_res/tank_factory.png");
m_panel = Image.createImage("/tank/map_res/bottom.png");
m_backgroundImgSprite = new Sprite(m_backgroundImg,
DrawTools.BACKGROUND_WIDTH,
DrawTools.BACKGROUND_HEIGHT);
m_layerManager.insert(m_backgroundImgSprite, 0);
m_panelSprite = new Sprite[DrawTools.PANEL_COUNTS];
for (int i = 0; i < DrawTools.PANEL_COUNTS; i++) {
m_panelSprite[i] = new Sprite(m_panel, DrawTools.PANEL_WIDTH,
DrawTools.PANEL_HEIGHT);
m_layerManager.insert(m_panelSprite[i], 0);
}
DrawTools.displayBackground(m_panelSprite, m_backgroundImgSprite);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private static void releaseMenuButton(){
try {
m_menuButtonImg=null;
m_menuWordImg=null;
for (int i = 0; i < MENU_BUTTON_COUNTS; i++) {
if (null != m_menuButtonImgSprite && null != m_menuButtonImgSprite[i]) {
m_layerManager.remove(m_menuButtonImgSprite[i]);
m_menuButtonImgSprite[i] = null;
}
}
m_menuButtonImgSprite=null;
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void createMenuButton() {
try {
m_menuButtonImg = Image.createImage("/tank/map_res/menu_button.png");
m_menuWordImg = Image.createImage("/tank/map_res/menu_word.png");
//MENU BUTTON
m_menuButtonImgSprite = new Sprite[MENU_BUTTON_COUNTS];
for (int i = 0; i < MENU_BUTTON_COUNTS; i++) {
m_menuButtonImgSprite[i] = new Sprite(m_menuButtonImg,
DrawTools.MENU_BUTTON_WIDTH,
DrawTools.MENU_BUTTON_HEIGHT);
m_layerManager.insert(m_menuButtonImgSprite[i], 0);
}
m_menuWordImgSprite=new Sprite[MENU_BUTTON_COUNTS];
for (int i = 0; i < MENU_BUTTON_COUNTS; i++) {
m_menuWordImgSprite[i]=new Sprite(m_menuWordImg,DrawTools.MENU_WORD_WIDTH,
DrawTools.MENU_WORD_HEIGHT);
m_layerManager.insert(m_menuWordImgSprite[i], 0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -