⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gamescreen.java

📁 j2me游戏Global星球文明,是国外的游戏,45度视角.
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
//Decompiled by DJ v3.9.9.91 Copyright 2005 Atanas Neshkov  Date: 2006-3-25 下午 09:39:13
//Home Page : http://members.fortunecity.com/neshkov/dj.html  - Check often for new version!
//Decompiler options: packimports(3) 

import java.io.DataInputStream;
import java.util.Random;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.*;
import javax.microedition.media.Manager;
import javax.microedition.media.Player;

public class GameScreen extends Canvas
{

 public GameScreen(Global global)
 {
     xbuttons = 11;
     castlei = 32;
     castlej = 32;
     winners = new String[10];
     winscores = new String[10];
     winnumbers = new String[10];
     anisplash = new Image[4];
     deltaScr = 8;
     deltaOff = 4;
     dticker = 3;
     gw = global;
     setFullScreenMode(true);
     scrW = getWidth();
     scrH = getHeight();
     if(scrH < 200)
         scrH = 208;
     ybuttons = 196;
     centerx = scrW >> 1;
     centery = scrH >> 1;
     scr = Image.createImage(scrW + deltaScr, scrH + deltaScr);
     scrGr = scr.getGraphics();
     fns = Font.getFont(64, 0, 8);
     fnsh = fns.getHeight();
     fnsb = Font.getFont(64, 1, 8);
     scrGr.setFont(fns);
     helpDY = fnsh;
     deltaScrX = 4;
     deltaScrY = 4;
     try
     {
         menubar = Image.createImage("/images/menubar.png");
         check = Image.createImage("/images/check.png");
         java.io.InputStream inputstream = getClass().getResourceAsStream("/theme.mid");
         themeSnd = Manager.createPlayer(inputstream, "audio/midi");
         themeSnd.prefetch();
         themeSnd.setLoopCount(-1);
     }
     catch(Exception exception) { }
     allocate();
 }

 public GameScreen()
 {
     xbuttons = 11;
     castlei = 32;
     castlej = 32;
     winners = new String[10];
     winscores = new String[10];
     winnumbers = new String[10];
     anisplash = new Image[4];
     deltaScr = 8;
     deltaOff = 4;
     dticker = 3;
 }

 public void allocate()
 {
     try
     {
         rnd = new Random(System.currentTimeMillis());
         land = Image.createImage("/images/land.png");
         canvatop = Image.createImage("/images/canvatop.png");
         canvaleft = Image.createImage("/images/canvaleft.png");
         canvaright = Image.createImage("/images/canvaright.png");
         canvabottom = Image.createImage("/images/canvabottom.png");
         objects = Image.createImage("/images/objects.png");
         resources = Image.createImage("/images/resources.png");
         anim = Image.createImage("/images/anim.png");
         uraganImg = Image.createImage("/images/uragan.png");
         buttons = Image.createImage("/images/buttons.png");
         resourcesbig = Image.createImage("/images/resourcesbig.png");
         people = Image.createImage("/images/people.png");
         ysticker = scrH - fnsh;
     }
     catch(Exception exception) { }
 }

 public void beginEarthQuake()
 {
     int i = (rnd.nextInt() & 0xff) * 50 >> 8;
     earthQuakeRifter = i / 10;
     earthQuakePeriod = 30 + i;
     earthQuake = true;
 }

 public void beginPlayerName()
 {
     playerName = "";
     cursorpos = 0;
     keywaitcnt = -1;
     keyi = 0;
     lastkey = -1;
     scrGr.setFont(fns);
     mode = 9;
 }

 public void beginSplash(String s, String s1)
 {
     splashPhase = 0;
     spTitle = s;
     spText = s1;
     xTicker = 162;
     endTicker = 24 - fns.stringWidth(s1) - 10;
     loadSplash();
     mode = 3;
 }

 public void beginTicker(String s)
 {
     stText = s;
     xsTicker = 182;
     endsTicker = lsticker - fns.stringWidth(s) - 10;
     sticker = true;
 }

 public void continueGame()
 {
     if(hassave)
     {
         gw.gm.restore();
         mode = 1;
         gamemode = 1;
         needmap = true;
         gw.gm.gameover = false;
         switchCountry(country);
         newGame = false;
         switch(gw.gm.chapter)
         {
         case 1: // '\001'
             Strings _tmp = gw.st;
             Strings _tmp1 = gw.st;
             beginSplash(countryName, Strings.intro[gw.st.locint] + " " + Strings.introloc[gw.st.locint][country]);
             break;

         case 2: // '\002'
             Strings _tmp2 = gw.st;
             gw.gs.beginSplash(gw.gs.countryName, Strings.chapter2[gw.st.locint]);
             break;

         case 3: // '\003'
             Strings _tmp3 = gw.st;
             gw.gs.beginSplash(gw.gs.countryName, Strings.chapter3[gw.st.locint]);
             break;

         case 4: // '\004'
             Strings _tmp4 = gw.st;
             Strings _tmp5 = gw.st;
             gw.gs.beginSplash(gw.gs.countryName, Strings.chapter4[gw.st.locint] + " " + Strings.chapter4loc[gw.st.locint][gw.gs.country]);
             break;
         }
         gw.gm.calculateBuilds();
     }
 }

 public void createUragan()
 {
     if(!uragan)
     {
         if((rnd.nextInt() & 1) != 0)
         {
             uraganx = 1386;
             uragany = 704 * (rnd.nextInt() & 0xffff) >> 16;
         } else
         {
             uraganx = 682 + (704 * (rnd.nextInt() & 0xffff) >> 16);
             uragany = 0;
         }
         uraganvx = 0;
         uraganvy = 0;
         uragan = true;
         uraganvisible = false;
     }
 }

 public void draw()
 {
     if(!uraganvisible)
     {
         cursorx = cursori * 22;
         cursory = cursorj * 22;
     } else
     {
         cursorx = uraganx;
         cursory = uragany;
     }
     scrGr.setColor(0);
     scrGr.setClip(0, 0, scrW + deltaScr, scrH + deltaScr);
     scrGr.fillRect(0, 0, scrW + deltaScr, scrH + deltaScr);
     boolean flag = false;
     int j1 = cursorj - 12;
     int k1 = cursorj + 12;
     int l1 = cursori - 12;
     int i2 = cursori + 12;
     if(j1 < 0)
         j1 = 0;
     if(k1 >= 64)
         k1 = 63;
     if(l1 < 0)
         l1 = 0;
     if(i2 >= 64)
         i2 = 63;
     for(int j2 = k1; j2 >= j1; j2--)
     {
         for(int k2 = i2; k2 >= l1; k2--)
             if((gw.lv.flags[j2][k2] & 1) == 0)
             {
                 int j = getVX(k2 * 22, j2 * 22);
                 int l = getVY(k2 * 22, j2 * 22);
                 if(l >= -44 && l < scrH + 44 && j >= -44 && j < scrW + 44)
                 {
                     int i = gw.lv.map[j2][k2];
                     byte byte1 = gw.lv.flags[j2][k2];
                     if(i > 0 && i <= 64)
                     {
                         if(i == 3 && (rnd.nextInt() & 0xff) < 32)
                         {
                             i = 4;
                             gw.lv.map[j2][k2] = (byte)i;
                         }
                         if(i == 4 && (rnd.nextInt() & 0xff) < 32)
                         {
                             i = 3;
                             gw.lv.map[j2][k2] = (byte)i;
                         }
                         drawSymbol(i, j, l, (byte1 & 4) != 0);
                     }
                     if((byte1 & 2) != 0)
                     {
                         for(int l2 = 0; l2 < gw.gm.peopleNum; l2++)
                             if(gw.gm.people[l2][0] / 22 == k2 && gw.gm.people[l2][1] / 22 == j2 && gw.gm.people[l2][9] != 0)
                             {
                                 int k = getVX(gw.gm.people[l2][0], gw.gm.people[l2][1]);
                                 int i1 = getVY(gw.gm.people[l2][0], gw.gm.people[l2][1]);
                                 drawPeople(l2, k, i1);
                             }

                     }
                 }
             }

     }

     if(!uraganvisible)
     {
         drawSymbol(18, centerx, centery, false);
         byte byte0 = gw.lv.map[cursorj][cursori];
         byte byte2 = gw.lv.resources[cursorj][cursori];
         if(byte0 == 5 && byte2 != 0 || byte0 == 42 && (byte2 & 0xc0) != 0)
             drawResource(byte2 >> 6 & 3, byte2 & 0x3f, centerx, centery);
     } else
     {
         drawUragan();
     }
     scrGr.setClip(deltaOff, (scrH - 16) + deltaOff, scrW, 16);
     scrGr.setColor(0x2d0c01);
     scrGr.setFont(fns);
     if(earthQuake)
     {
         String s;
         if(gw.st.locint == 0)
         {
             Strings _tmp = gw.st;
             s = Strings.earthQuake[gw.st.locint][earthQuakeRifter];
         } else
         {
             Strings _tmp1 = gw.st;
             s = gw.st.get("Earhtquake by power ") + Strings.earthQuake[gw.st.locint][earthQuakeRifter];
         }
         scrGr.setColor(0);
         scrGr.drawString(s, (scrW >> 1) + deltaOff, scrH + deltaOff, 33);
         scrGr.setColor(0xffffff);
         scrGr.drawString(s, ((scrW >> 1) - 1) + deltaOff, (scrH - 1) + deltaOff, 33);
     } else
     {
         String s1 = gw.st.get("Day") + " " + days;
         lsticker = 4 + fns.stringWidth(s1);
         scrGr.setColor(0);
         scrGr.drawString(s1, 1 + deltaOff, scrH + deltaOff, 36);
         scrGr.setColor(0xffffff);
         scrGr.drawString(s1, deltaOff, (scrH - 1) + deltaOff, 36);
         if(sticker)
             drawTicker();
     }
 }

 public void drawBuild()
 {
     int i = 0;
     boolean flag = false;
     scrGr.setClip(0, 0, scrW, scrH);
     drawCanva();
     drawSymbol(builds[buildNum], 32, 70, true);
     if(gw.st.locale.compareTo("ru") == 0)
         i = 1;
     Strings _tmp = gw.st;
     int k = Strings.builddescr[i][buildNum].length;
     scrGr.setColor(0x2d0c01);
     scrGr.setFont(fns);
     scrGr.setClip(0, 0, scrW, scrH);
     byte byte1 = 68;
     int l = 6;
     int i1 = fnsh + 2;
     Strings _tmp1 = gw.st;
     drawString(Strings.builddescr[i][buildNum][0], scrW >> 1, l, 17, 0x2d0c01);
     l = 40;
     for(int j1 = 1; j1 < k; j1++)
     {
         Strings _tmp2 = gw.st;
         drawString(Strings.builddescr[i][buildNum][j1], byte1, l, 20, 0x2d0c01);
         l += i1;
     }

     byte1 = 10;
     l = 92;
     canbuild = true;
     for(int k1 = 0; k1 < 3; k1++)
     {
         Game _tmp3 = gw.gm;
         byte byte0 = Game.forbuild[buildNum][k1][0];
         if(byte0 > 0)
         {
             drawResIcon(byte0, byte1, l);
             Game _tmp4 = gw.gm;
             int j;
             if(gw.gm.stock[byte0] >= Game.forbuild[buildNum][k1][1])
             {
                 j = 0x2d0c01;
             } else
             {
                 j = 0xcd3705;
                 canbuild = false;
             }
             scrGr.setClip(byte1 + 8 + 32, l + 8, 32, 14);
             drawString(String.valueOf(Game.forbuild[buildNum][k1][1]), byte1 + 8 + 32, l + 10, 20, j);
             l += 40;
         }
     }

     if(canbuild)
         drawButton(1, xbuttons, ybuttons);
     else
         drawButton(0, xbuttons, ybuttons);
     if(buildNum > 0)
         drawButton(2, xbuttons + 18, ybuttons);
     else
         drawButton(0, xbuttons + 18, ybuttons);
     if(buildNum < 16)
         drawButton(3, scrW - xbuttons - 36, ybuttons);
     else
         drawButton(0, scrW - xbuttons - 36, ybuttons);
     drawButton(4, scrW - xbuttons - 16, ybuttons);
 }

 public void drawBuilds()
 {
     drawCanva();
     scrGr.setColor(0x2d0c01);
     scrGr.setFont(fns);
     drawString(gw.st.get("Buildings"), scrW >> 1, 6, 17, 0x2d0c01);
     int i = ((scrW >> 1) - 32 - 32) + 8 + 4;
     int k = 4 + buildsscreeny + 32 + 8;
     int j = k;
     int l = 0;
     do
     {
         GameScreen _tmp = gw.gs;
         if(l < 17)
         {
             if(l == 9)
             {
                 i += 64;
                 j = k;
             }
             if(j > 42 && j < 136)
             {
                 drawSymbol(builds[l], i + 8, j + 16 + 6, true);
                 scrGr.setClip(0, 0, scrW, scrH);
                 drawString(String.valueOf(gw.gm.buildsQuantity[l]), i + 40, j + 14 + 6, 20, 0x2d0c01);
             }
             j += 40;
             l++;
         } else
         {
             break;
         }
     } while(true);
     if(buildsscreeny < 0)
         drawButton(5, (scrW >> 1) - 18, ybuttons);
     else
         drawButton(0, (scrW >> 1) - 18, ybuttons);
     if(buildsscreeny > -(440 - scrH))
         drawButton(6, scrW >> 1, ybuttons);
     else
         drawButton(0, scrW >> 1, ybuttons);
     drawButton(1, xbuttons, ybuttons);
 }

 public void drawButton(int i, int j, int k)
 {
     scrGr.setClip(j, k, 16, 16);
     scrGr.drawImage(buttons, j - 16 * i, k, 20);
 }

 public void drawCanva()
 {
     scrGr.setClip(0, 0, scrW + deltaScr, scrH + deltaScr);
     scrGr.setColor(0);
     scrGr.fillRect(0, 0, scrW + deltaScr, scrH + deltaScr);
     scrGr.setColor(0xf5ebc9);
     scrGr.fillRect(5, 52, 166, 121);
     scrGr.drawImage(canvatop, 0, 0, 20);
     scrGr.drawImage(canvabottom, 0, 173, 20);
     scrGr.drawImage(canvaleft, 0, 52, 20);
     scrGr.drawImage(canvaright, 171, 52, 20);
 }

 public void drawCover()
 {
     try
     {
         cover = Image.createImage("/images/cover.png");
         scrGr.drawImage(cover, 0, 0, 20);
         cover = null;
     }
     catch(Exception exception) { }
     if(sound)
         try
         {
             themeSnd.start();
         }
         catch(Exception exception1) { }
     mode = 2;
     repaint();
     serviceRepaints();
 }

 public void drawEarthQuake()
 {
     deltaScrX = rnd.nextInt() & 7;
     deltaScrY = rnd.nextInt() & 7;
     if(vibration)
         try
         {
             Display.getDisplay(gw).vibrate(100);
         }
         catch(Exception exception) { }
     int i = 0;
     if(i > 60)
         i = 60;
     if((rnd.nextInt() & 0xff) < i && gw.gm.buildsNum > 0)
     {
         int j = (rnd.nextInt() & 0xff) * gw.gm.buildsNum >> 8;
         byte byte0 = gw.gm.objects[j][0];
         byte byte1 = gw.gm.objects[j][1];
         gw.gm.byUragan = false;
         gw.gm.destroyBuild(byte0, byte1);
     }
 }

 public void drawHelp()
 {
     drawCanva();
     scrGr.setFont(fns);
     drawString(gw.st.get("Help"), scrW >> 1, 6, 17, 0x2d0c01);
     scrGr.setClip(0, 39, scrW, 136);
     int i = (helpy + 39) - fnsh;
     Strings _tmp = gw.st;
     helplen = Strings.help[gw.st.locint].length;
     for(int j = 0; j < helplen; j++)
     {
         i += fnsh;
         if(i < 39 - fnsh)
             continue;
         if(i > 175)
             break;
         Strings _tmp1 = gw.st;
         drawString(Strings.help[gw.st.locint][j], 18, i, 20, 0x2d0c01);
     }

     if(helpy < 0)
         drawButton(5, (scrW >> 1) - 18, ybuttons);
     else
         drawButton(0, (scrW >> 1) - 18, ybuttons);
     if(helpy > -(helplen * fnsh - 136))
         drawButton(6, scrW >> 1, ybuttons);
     else
         drawButton(0, scrW >> 1, ybuttons);
     drawButton(1, xbuttons, ybuttons);
     repaint();
     serviceRepaints();
 }

 public void drawHiScores()
 {
     drawCanva();
     if(localhiscores)
     {
         gw.hiScores.printScores(winners, winscores);
     } else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -