?? modelcanvas.java~9~
字號:
break;
case GAME_MENU: //游戲菜單界面
break;
}
repaint();
serviceRepaints();
if (keyRepeat) //按鍵處理
keyProcess();
if (key_delay > 0) { //按鍵時間控制
key_delay--;
}
//垃圾回收
System.gc();
timetaken = System.currentTimeMillis() - starttime;
if (timetaken < TIME_PER_FRAME) //確定游戲幀數
gameThread.sleep(TIME_PER_FRAME - timetaken);
}
}
catch (Exception ex) {
//打印錯誤信息,并在屏幕上顯示
System.out.println("1. game error: " + ex.toString());
System.out.println("2. error: " + error);
game_state = GAME_ERROR;
repaint();
serviceRepaints();
}
game.exit(); //退出游戲
}
protected final void keyPressed(int key) { //鍵按下
keyRepeat = true;
key_press = true;
this.key = key;
}
protected final void keyReleased(int key) { //鍵釋放
keyRepeat = false;
}
private final void keyProcess() { //按鍵處理
error = 2;
if (key_delay == 0) {
key_delay = 2;
switch (game_state) {
case GAME_START:
keyPressed_GameStart();
break;
case GAME_RUN:
keyPressed_GameRun();
break;
case GAME_PAUSE:
keyPressed_GamePause();
break;
case GAME_PICTURE:
break;
case GAME_OVER:
break;
case GAME_WIN:
break;
case GAME_MENU:
keyPressed_GameMenu();
break;
case GAME_SET:
keyPressed_GameSet();
break;
case GAME_ABOUT:
keyPressed_GameAbout();
break;
case GAME_HELP:
keyPressed_GameHelp();
break;
}
}
}
private void keyPressed_GameStart() {
if (key == KEY_NUM2 || key == KEY_UP_ARROW) {
actY -= 40;
if (actY <20) {
actY = 100;
}
}
if (key == KEY_NUM8 || key == KEY_DOWN_ARROW) {
actY += 40;
if (actY >100) {
actY = 20;
}
}
if (key == KEY_SOFTKEY1) {
game_state = GAME_RUN;
}
if (key == KEY_SOFTKEY2) {
commandChange("確定", "", 1, 0);
game_state = GAME_MENU;
}
}
private void keyPressed_GameSet() {
if (key == KEY_SOFTKEY3 || key == KEY_SOFTKEY2) {
commandChange("確定", "", 1, 0);
game_state = GAME_MENU;
}
}
private void keyPressed_GameAbout() {
if (key == KEY_SOFTKEY3 || key == KEY_SOFTKEY2) {
commandChange("確定", "", 1, 0);
game_state = GAME_MENU;
}
}
private void keyPressed_GameHelp() {
if (key == KEY_NUM2 || key == KEY_UP_ARROW) {
helpY = helpY + sysFont.getHeight();
if (helpY >= sysFont.getHeight()) {
helpY = sysFont.getHeight();
}
}
if (key == KEY_NUM8 || key == KEY_DOWN_ARROW) {
helpY = helpY - sysFont.getHeight();
if (helpY <= -sysFont.getHeight() * (11 - HEIGHT / sysFont.getHeight())) {
helpY = -sysFont.getHeight() * (11 - HEIGHT / sysFont.getHeight());
}
}
if (key == KEY_SOFTKEY3 || key == KEY_SOFTKEY2) {
commandChange("確定", "", 1, 0);
game_state = GAME_MENU;
}
}
private void keyPressed_GameRun() {
switch (key) {
case KEY_UP_ARROW:
case KEY_NUM2:
doUp();
break;
case KEY_DOWN_ARROW:
case KEY_NUM8:
doDown();
break;
case KEY_LEFT_ARROW:
case KEY_NUM4:
doLeft();
break;
case KEY_RIGHT_ARROW:
case KEY_NUM6:
doRight();
break;
case KEY_NUM5:
// System.out.println("dddddd");
doFire();
break;
}
}
private void keyPressed_GamePause() {
}
private void keyPressed_GameMenu() {
if (key == KEY_SOFTKEY3 || key == KEY_SOFTKEY1 || key == KEY_NUM5) {
switch (MainMenuId) {
case 1:
commandChange("確定", "返回", 1, 1);
game_state = GAME_START;
break;
case 2:
game_state = GAME_SET;
break;
case 3:
commandChange("", "返回", 1, 1);
// game_state = GAME_SET;
break;
case 4:
commandChange("", "返回", 1, 1);
game_state = GAME_HELP;
break;
case 5:
commandChange("", "返回", 1, 1);
game_state = GAME_ABOUT;
break;
case 6:
quitGame = true;
break;
}
}
if (key == KEY_NUM2 || key == KEY_UP_ARROW) {
MainMenuId--;
if (MainMenuId < 1) {
MainMenuId = 6;
}
}
if (key == KEY_NUM5 || key == KEY_DOWN_ARROW) {
MainMenuId++;
if (MainMenuId > 6) {
MainMenuId = 1;
}
}
}
//重畫
public final void repaintFrame(int time) {
// System.out.println("run RPGControl--RepaintFrame");
long PaintTime = System.currentTimeMillis();
repaint();
serviceRepaints();
PaintTime = System.currentTimeMillis() - PaintTime;
try {
if (PaintTime < time) Thread.sleep(time - PaintTime);
else Thread.sleep(0);
}
catch (Exception ex) {
}
}
//特殊字效果顯示
//str:顯示的文字 x,y:顯示位置 color1,color2:字顏色
private void drawWord(Graphics g, String str, int x, int y, int color1,
int color2) {
g.setColor(color2); //字外面的顏色
g.drawString(str, x - 1, y, 20);
g.drawString(str, x + 1, y, 20);
g.drawString(str, x, y - 1, 20);
g.drawString(str, x, y + 1, 20);
g.setColor(color1); //字里面的顏色
g.drawString(str, x, y, 20);
}
private void commandChange(String left,
String right, int leftadd, int rightadd) {
removeCommand(left_command);
removeCommand(right_command);
left_command = new Command(left, Command.SCREEN, 1);
right_command = new Command(right, Command.SCREEN, 2);
if (leftadd == 1) {
addCommand(left_command);
}
if (rightadd == 1) {
addCommand(right_command);
}
}
public void commandAction(Command command, Displayable displayable) {
if (command == left_command) {
key = KEY_SOFTKEY1;
keyProcess();
// repaint();
// serviceRepaints();
}
else if (command == right_command) {
key = KEY_SOFTKEY2;
keyProcess();
// repaint();
// serviceRepaints();
}
}
private void doLeft() {
int tempX = myShip.getX() - (myShip.getwidth() / 2);
if (tempX < 0) {
tempX = 0;
}
myShip.setX(tempX);
}
private void doRight() {
int tempX = myShip.getX() + (myShip.getwidth() / 2);
if (tempX > WIDTH - myShip.getwidth()) {
tempX = WIDTH - myShip.getwidth();
}
myShip.setX(tempX);
}
private void doUp() {
int tempY = myShip.getY() - (myShip.getheight() / 2);
if (tempY < 0) {
tempY = 0;
}
myShip.setY(tempY);
}
private void doDown() {
int tempY = myShip.getY() + (myShip.getheight() / 2);
if (tempY > HEIGHT - myShip.getheight()) {
tempY = HEIGHT - myShip.getheight();
}
myShip.setY(tempY);
}
private void doFire(){
if(myMissileCount < myMiss.length){
for(int i=0;i<myMiss.length;i++){
// System.out.println("isAlive"+myMiss[i].isAlive);
if(!myMiss[i].isAlive()){
myMiss[i].setX((myShip.getwidth()-myMiss[i].getwidth())/2+myShip.getX());
myMiss[i].setY(myShip.getheight()-myMiss[i].getheight()+myShip.getY()-10);
myMiss[i].setAlive(true);
myMissileCount++;
break;
}
}
}
}
private void doEnemy(){
tickCount++;
if(tickCount<1||tickCount>8){
tickCount=0;
if(tickCount<ufos.length){
int temp=random.nextInt()%2;
if(temp==1||temp==-1){
temp = random.nextInt()%2;
UFO ufo;
for(int i=0;i<ufos.length;i++){
if(!ufos[i].isAlive()){
if(temp==0){
temp=random.nextInt()%2;
if(temp<0) temp = temp*(-1);
ufos[i].setDirection(UFO.DIRECTION_RIGHT);
ufos[i].setX(0+2);
ufos[i].setY(10+(((ufos[i].getheight()+2)*2)*temp));
}else{
if (temp < 0) temp = temp * ( -1);
ufos[i].setDirection(UFO.DIRECTION_LEFT);
ufos[i].setX((WIDTH-ufos[i].getwidth()/2)-2);
ufos[i].setY(10 + ( ( (ufos[i].getheight() + 2) * 2) * temp)
+(ufos[i].getheight()+2));
}
ufos[i].setAlive(true);
ufoCount++;
break;
}
}
}
}
}
}
//畫背景地圖
/////////////shijin_map1
private final void createImageMap() {
int[] info = new int[3]; //0:圖片類型 1:圖片X坐標 2:圖片Y坐標
Graphics g1;
String file = null;
img_map = null;
int color = 0;
//LOAD地圖文件和圖片元素
file = "/Map3.map";
createImagemap1();
try {
InputStream input = getClass().getResourceAsStream(file);
DataInputStream data = new DataInputStream(input);
int imageNumber = data.readInt(); //讀第一個數據,圖片數量
g1 = Map.getGraphics();
g1.setColor(color); //背景顏色
g1.fillRect(0, 0, WIDTH, 2 * HEIGHT);
g1.setClip(0, 0, WIDTH, 2 * HEIGHT);
for (int i = 0; i < imageNumber; i++) {
info[0] = data.readInt();
info[1] = data.readInt();
info[2] = data.readInt();
if (info[1] >= 0 && info[1] < 2 * HEIGHT) {
g1.drawImage(img_map[info[0]], info[1], info[2], 20);
}
}
data.close();
}
catch (IOException ex) {
System.out.println("3" + ex.toString());
}
g1 = null;
}
private void createImagemap1() {
error = 10;
img_map = null;
img_map = new Image[6];
try {
int img_size[] = {
275, 484, 440, 416, 274, 730
};
int skip = 0;
int i = 0;
try {
byte[] tta = null;
InputStream input = this.getClass().getResourceAsStream("/map3.zdfy");
tta = new byte[2619];
input.read(tta);
input.close();
for (i = 0; i < img_size.length; i++) {
img_map[i] = Image.createImage(tta, skip, img_size[i]);
skip += img_size[i];
}
tta = null;
}
catch (IOException ex) {}
}
catch (Exception e) {
System.out.println("create map1image!");
}
}
public Image createImageFile(String str, int number) {
Image tempImage = null;
try {
byte[] tta = null;
str = "/" + str + ".zdfy";
InputStream input = this.getClass().getResourceAsStream(
str);
tta = new byte[number];
input.read(tta);
input.close();
tempImage = Image.createImage(tta, 0, number);
tta = null;
System.gc();
}
catch (IOException ex) {}
if (tempImage == null) {
System.out.println("error ----- createImageFile ---" + str);
}
return tempImage;
}
//the program end
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -