📄 gamecanvas.java
字号:
/*畫布類,畫logo,遊戲畫面*/
package PenguinCircus;
import java.util.Random;
import com.nttdocomo.io.HttpConnection;
import com.nttdocomo.ui.*;
import java.io.*;
import javax.microedition.io.Connector;
import javax.microedition.io.InputConnection;
//import com.nokia.mid.ui.FullCanvas;
//import com.nokia.mid.ui.DirectUtils;
public class GameCanvas extends Canvas
{
int adad=10;
boolean canPaint = false;
//boolean isxiazaiError=false;
byte byte0 = 0;
ByteArrayOutputStream bt;
HttpConnection cn;
byte data[];
int dsiz;
byte readBuf[];
Font ft;
protected int showCon=0;
private Image company_logo,glogo,bg,snow,ice,seasky,icon;
Image menu1,menu2,menu3,menu4,menu5,menu6,menu7;
Image nar1,nar2,nar3,nar4,nar5;
private Image cloudImg,shadow1,shadow2,key,water1,water2,water3;
private Image simlifeimg;
protected Image sceneryImg[]; //近景
protected Image holdbackImg[]; //道具
protected Image snowManImg[]; //雪人
Image penguin[];
Image status[];
Image nimg[];
int m_delay=0;
protected int stepY=96; //行走位置
protected int groundY=72; //地面高度
int offset=0;
Random rd=new Random();
int soundVol=0; //音量
String HOSTNAME;
String HOSTNAME2 = "";
String HOSTNAME3;
static String loadImgList2[] = {"1","2","3"};
static int loadImgPos2[] = {0,9216,9216+9216,9216+9216+6568};
static String loadImgList[] = {
"simlife",
"bg",
"cloud",
"company_logo",
"holdback1",
"holdback2",
"holdback3",
"holdback4",
"holdback5",
"holdback6",
"holdback7",
"ice",
"icon",
"key",
"logo",
"menu1",
"menu2",
"menu3",
"menu4",
"menu5",
"menu6",
"menu7",
"n1",
"n10",
"n11",
"n2",
"n3",
"n4",
"n5",
"n6",
"n7",
"n8",
"n9",
"nar1",
"nar2",
"nar3",
"nar4",
"nar5",
"penguin1",
"penguin10",
"penguin11",
"penguin12",
"penguin13",
"penguin14",
"penguin15",
"penguin16",
"penguin17",
"penguin18",
"penguin19",
"penguin2",
"penguin20",
"penguin21",
"penguin22",
"penguin23",
"penguin24",
"penguin25",
"penguin26",
"penguin27",
"penguin28",
"penguin3",
"penguin4",
"penguin5",
"penguin6",
"penguin7",
"penguin8",
"penguin9",
"scenery1",
"scenery2",
"scenery3",
"scenery4",
"seasky",
"shadow1",
"shadow2",
"snow",
"snowman1",
"snowman2",
"snowman3",
"status1",
"status2",
"status3",
"status4",
"status5",
"status6",
"status7",
"status8",
"status9",
"water1",
"water2",
"water3"
};
//static int loadImgSize[] = {
// 551, 609, 844, 953, 1697, 1960,2948, 4056,137,176,198,258,263,298,409,422,501,547
//};
static int loadImgPos[] = {
0,132,990,
56,
281,
226,
212,
292,
241,
273,
216,
355,
667,
239,
176,
1788,
239,
102,
103,
190,
97,
96,
75,
53,
52,
60,
60,
52,
52,
59,
52,
52,
60,
52,
88,
88,
89,
88,
70,
213,
237,
205,
242,
246,
330,
209,
218,
216,
161,
201,
214,
213,
240,
263,
338,
238,
242,
306,
276,
279,
217,
159,
197,
215,
248,
242,
228,
132,
96,
136,
131,
147,
67,
69,
353,
212,
213,
219,
82,
66,
55,
73,
104,
47,
62,
55,
90,
79,
100,
100};
/////picture info
protected int holdbackPos[][]={{0,0,0,40}, //冰堆高
{0,0,0,32}, //冰堆低
{0,0,0,32}, //高臺
{0,0,0,20}, //浮冰
{0,0,0,20}, //碎冰
{0,0,0,15}, //冰窟窿
{0,0,0,0}, //冰窟窿
};
protected int sceneryPos[][]={{0,0,0,0}, //小旗
{0,0,0,0}, //梯子
{0,0,0,0}, //舞旗企鵝觀眾
{0,0,0,0}, //跳躍企鵝觀眾
};
////screen info
private int scrW=0,scrH=0;
////key control
protected boolean keyup=false;
protected boolean keydown=false;
protected boolean keyleft=false;
protected boolean keyright=false;
protected boolean keyfire=false;
protected boolean keyZero=false;
protected boolean keyTouched=false;
protected boolean keyOk=false;
protected boolean keyBack=false;
protected boolean keyupFlg=false;
protected boolean keydownFlg=false;
protected boolean keyleftFlg=false;
protected boolean keyrightFlg=false;
////key buffer control
protected int keyStackNum=0;
protected int keyStackLen=4;
protected byte[] keyStack={(byte)127,(byte)127,(byte)127,(byte)127,(byte)127,(byte)127};
protected int keyStackPointer=0;
protected boolean longKey=false; //長按鍵的標誌
////pass control
protected int passCount=8;
protected boolean isRunning=false;
protected boolean retGame=false;
////menu control
protected boolean showMenu=false;
protected int mStep=0; //menu step
protected int menuClassId=0;
protected int menuId=0;
protected int subMenuId=0;
protected int levelSelId=1; //選擇關卡
///////
protected int gStep=0; //level pass/game over/switch step
protected int loadingProcess=0; //載入進度條
protected boolean loadingFlg=false; //顯示進度條標誌
////rubbish
//static byte[] rubbish=new byte[10240];
////////////
private Display gDisp=null;
protected GameData gda=null;
protected Penguin pg=null;
protected byte ycCnt=0; //控制黃牌標誌閃爍
static String helpStr="操作指南:\n向左加速:4或左\n向右加速:6或右\n下蹲:8或下\n跳躍:2或上\n大力跳:下蹲按跳\n放棄賽點:0\n比賽規則:\n在最短時間內越過障礙到達終點。每次違例都將被黃牌警告,並返回前一賽點重新起跑。賽點用小紅旗標出。當黃牌累計得到紅牌時,將被淘汰出局。";
static String[] levelStr={"第一賽道","第二賽道","第三賽道","第四賽道","第五賽道","第六賽道","第七賽道","第八賽道","最終賽道"};
static String[] passStr={"不要氣餒,加油啊!"," 還可以更好! ","耶,賽道最好成績!"};
static String[] roadInfo={" 乾燥 "," 濕滑 "," 乾燥 "," 乾燥 "," 濕滑 "," 濕滑 "," 乾燥 ","異常濕滑 ","異常濕滑"};
int[] scores = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
static String[] levelTip={"極地運動會隆重開幕!美麗的妮可在終點線等著你呢!",
"溜冰可以很快,但踩著滑板是無法停下來的哦!",
"掌握好連續跳躍的時機和力度,來個淩波微步!",
"浮冰是方便又危險的落點,絕不能被碰撞,小心哦!",
"隨時注意躲開雪人和他投擲的雪球!",
"小心,被障礙困住後就只能按 0 求助了!",
"小心利用浮冰跳躍,撞碎了可能導致比賽結束哦!",
"誰說企鵝不會飛?不要翅膀,用你的滑板!",
"最後的賽道!朝著終點線上的妮可前進,加油!"
};
static String[] menuStr={"開始","設置","幫助","尋寶","賽況","退出"};
protected boolean showTitle=false;
//protected boolean showHelp=false;
//int findingP=0;
private short strPointer[]=new short[10];
protected short page=0;
protected int helpPoint[][]={{1,6,8,1}, //(所在關卡,起始位置,終止位置,提示方向[0:後,1:前,2:上,3:下]
{1,6,8,1},
{1,9,9,2},
{1,17,20,1},
{1,21,21,2},
{1,50,51,2},
{1,54,56,1},
{1,57,57,2},
{1,101,107,1},
{1,108,109,3},
{1,110,110,2},
{2,144,144,2},
{2,154,154,2},
{2,165,165,2},
{4,23,24,0},
{4,33,33,1},
{4,34,34,2},
{5,15,18,1},
{5,19,19,3},
{5,20,20,2},
{5,66,69,1},
{5,71,74,3},
{5,75,75,2},
{6,77,79,0},
{6,107,113,1},
{6,114,117,3},
{6,118,118,2}};
protected boolean audienceFlg=false;
protected boolean waterFlg=false;
public GameCanvas(Display disp) { //constructor
for (int i = 1; i < loadImgPos.length; i++) {
loadImgPos[i] += loadImgPos[i - 1];
}
ft = Font.getFont(0x70000200);
getrecord();
gDisp=disp;
gda=new GameData();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -