📄 gamecanvas.java
字号:
/*
* GameCanvas.java
*
* Created on 2006年2月20日, 下午10:07
*/
package GamePP;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
/**
*
* @author Sirius
* @version
*/
public class GameCanvas extends Canvas implements Runnable {
public int HSPEED; //纵向速度
public int WSPEED; //横向速度
private int FSPEED=10; //重力加速度
private int index ; //游戏开始状态的选择编号
private int style[];
private int LMBrick_Top_x ,LMBrick_Top_y ; //移动方块坐标
private int RMBrick_Top_x ,RMBrick_Top_y ;
private int PBrick_Top_x[] ,PBrick_Top_y[] ;
private GamePP LMove_Brick;
private GamePP RMove_Brick;
private GamePP MainBoard ;
private GamePP Push_Brick ;
private GamePP Girl ;
private GamePP Boy ;
private GamePP WinnerFrame;
private GamePP heart;
private GamePP WFrame ;
private Image copy;//缓冲区对象
private int MLBrick_Hflag ; //垂直移动方向
private int MLBrick_Wflag ; //水平移动方向
private int MRBrick_Hflag ;
private int MRBrick_Wflag ;
private int FallFlag ; // 下落标志 ,下落则屏蔽碰撞
private int Push_Flag[] ; //推动砖块标志,0:未推动,-1向左,1向右
private int LIsPressed ;
private int RIsPressed ;
private int UP_MAX =0 ;
private int DOWN_MAX=66 ;
private int LEFT_MAX =0 ;
private int RIGHT_MAX=98 ;
private int LM_MAXRIGHT[] ; //左边方块向右移动的最大距离
private int RM_MAXLEFT[] ; //右边方块向左移动的最大距离
private int PBrick_Place_Top_x[];//凹槽坐标
private int PBrick_Place_Top_y[];
private int PBrick_Place_Bottom_x=74;
private int Boy_Push ; //男孩第几个方块被推动了
private int Girl_Push; //女孩第几个方块被推动
private int girl_x ;
private int girl_y ;
private int boy_x ;
private int boy_y ;
private int now_winner ; //此局胜者
private int boy_win_num ;
private int girl_win_num;
private int total_winner ;
private int boy_heart_x[] ;
private int boy_heart_y[] ;
private int girl_heart_x[];
private int girl_heart_y[];
private int start ; //游戏的一次性开始画面
private boolean pause;//是否暂停游戏
public GameCanvas() {
super();
copy= Image.createImage(this.getWidth(),this.getHeight());
LMove_Brick=new GamePP("/MBrick1.png");
RMove_Brick=new GamePP("/MBrick2.png");
MainBoard =new GamePP("/mainFrame.png");
Girl= new GamePP("/girl.png") ;
Boy = new GamePP("/boy.png") ;
Push_Brick =new GamePP("/Push_Brickl.png") ;
WinnerFrame = new GamePP("/angle.png");
heart= new GamePP("/heart.png") ;
WFrame=new GamePP("/2191.png") ;
style=new int[3] ;
Push_Flag =new int[3] ;
PBrick_Top_x=new int[3] ;
PBrick_Top_y=new int[3] ;
LM_MAXRIGHT=new int[3] ;
RM_MAXLEFT=new int[3] ;
PBrick_Place_Top_x = new int[3];
PBrick_Place_Top_y = new int[3];
boy_heart_x = new int[2] ;
boy_heart_y = new int[2] ;
girl_heart_x=new int[2] ;
girl_heart_y=new int[2] ;
PBrick_Place_Top_x[0]=50 ;
PBrick_Place_Top_y[0]=9 ;
PBrick_Place_Top_x[1]=50 ;
PBrick_Place_Top_y[1]=28 ;
PBrick_Place_Top_x[2]=50 ;
PBrick_Place_Top_y[2]=47 ;
//奖励心的位置
boy_heart_x[0]=51;
boy_heart_x[1]=51;
boy_heart_y[0]=68;
boy_heart_y[1]=80;
girl_heart_x[0]=62;
girl_heart_x[1]=62;
girl_heart_y[0]=68;
girl_heart_y[1]=80;
girl_x =76 ;
girl_y =68 ;
boy_x =33 ;
boy_y =66 ;
start=0 ;
index=1 ;
T_iniGame() ;
}
//单局初始化游戏变量参数
protected void S_iniGame(){
// WSPEED=4 ; //2,4,8
// HSPEED=4 ; //1 ,3 ,6
Boy_Push=8 ; //初始时没有被推动的方块定位8
Girl_Push=8;
MLBrick_Hflag=0 ; //垂直运动方向 ,0向右,1向左
MLBrick_Wflag=0 ; //水平运动方向 ,0无 ,1向右 ,-1向左
MRBrick_Hflag=0 ;
MRBrick_Wflag=0 ;
FallFlag= 0 ; //初始时置0
for(int i=0 ;i<3;i++){
Push_Flag[i]=0 ;
style[i]=0 ;
}
LMBrick_Top_x =0 ;
LMBrick_Top_y =0 ;
RMBrick_Top_x =98;
RMBrick_Top_y =0 ;
now_winner=0 ;//0为新的一局,1为boy胜,8为girl胜
total_winner=0 ;
for(int i=0 ;i<3; i++){
PBrick_Top_x[i]=PBrick_Place_Top_x[i] ;
PBrick_Top_y[i]=PBrick_Place_Top_y[i] ;
}
LIsPressed =0 ;
RIsPressed =0 ;
for(int i=0 ;i<3 ;i++){
LM_MAXRIGHT[i]=PBrick_Place_Top_x[i]-26; //26为活动方块长度
RM_MAXLEFT[i]=PBrick_Place_Bottom_x;
}
pause = false;
}
//游戏重载
protected void T_iniGame(){
S_iniGame();
boy_win_num=0 ;
girl_win_num=0;
}
protected void paint(Graphics g) {
Graphics offscreen = copy.getGraphics();// 获得一个新的Graphics对象
//清屏
offscreen.setColor(255,255,255);
offscreen.fillRect(0,0,this.getWidth(),this.getHeight());
if((start==1)&&(index==1)){
//游戏画面
if((total_winner==0)&&(now_winner==0)){
MainBoard.OffdrawPic( 0,0,offscreen) ;
LMove_Brick.OffdrawPic( LMBrick_Top_x,LMBrick_Top_y,offscreen) ;
RMove_Brick.OffdrawPic( RMBrick_Top_x,RMBrick_Top_y,offscreen) ;
for(int i=0;i<3;i++){
Push_Brick.OffdrawPic(PBrick_Top_x[i],PBrick_Top_y[i],offscreen );
}
Girl.OffdrawPic(girl_x,girl_y,offscreen);
Boy.OffdrawPic( boy_x,boy_y,offscreen);
for(int i=0;(i<boy_win_num)&&(boy_win_num<3);i++){
heart.OffdrawPic( boy_heart_x[i],boy_heart_y[i],offscreen) ;
}
for(int i=0;(i<girl_win_num)&&(girl_win_num<3);i++){
heart.OffdrawPic( girl_heart_x[i],girl_heart_y[i],offscreen);
}
g.drawImage( copy,0,0,Graphics.LEFT |Graphics.TOP );
}
//单局胜利画面
else if((total_winner==0)&&(now_winner!=0)){
String ss1 ;
String ss2 ;
String ss4 ;
//男孩单局胜利画面
if(now_winner==1){
WFrame.OffdrawPic(0,0,offscreen);
if(boy_win_num==1){
ss1="男孩胜利!" ;
ss2="厉害!!!!" ;
}
else{
ss1="男孩再次胜利!" ;
if(girl_win_num==2){
ss2="战成平手!!" ;
}
else{
ss2="女孩要加油了!!";
}
}
ss4="按5进行下一局" ;
g.setColor(0x00ffeedd);
g.drawImage(copy,0,0,Graphics.LEFT |Graphics.TOP );
g.setFont(Font.getFont(Font.FACE_SYSTEM ,Font.STYLE_BOLD,Font.SIZE_LARGE));
g.drawString(ss1,1,3,Graphics.TOP |Graphics.LEFT );
g.drawString(ss2,5,40,Graphics.TOP |Graphics.LEFT );
g.setColor(0x00fffe57) ;
g.drawString(ss4,0,70,Graphics.TOP |Graphics.LEFT);
}
//女孩单局胜利画面
else {
WFrame.OffdrawPic(0,0,offscreen);
if(girl_win_num==1){
ss1="女孩胜利!" ;
ss2="厉害!!!!" ;
}
else{
ss1="女孩又胜利了!" ;
if(boy_win_num==2){
ss2="追成平手!!" ;
}
else{
ss2="男孩别丢人哦!!";
}
}
ss4="按5进行下一局" ;
g.setColor(0x00ffffff);
g.drawImage(copy,0,0,Graphics.LEFT |Graphics.TOP );
g.setFont(Font.getFont(Font.FACE_SYSTEM ,Font.STYLE_BOLD,Font.SIZE_LARGE));
g.drawString(ss1,1,3,Graphics.TOP |Graphics.LEFT );
g.drawString(ss2,5,40,Graphics.TOP |Graphics.LEFT );
g.setColor(0x00fffe57) ;
g.drawString(ss4,0,70,Graphics.TOP |Graphics.LEFT);
}
}
//总局胜利画面
else{
//男孩总局胜利画面
String ss1;
// String ss2;
String ss3;
if(total_winner==1){
ss1="最终冠军--男孩!" ;
ss3="按5开新的较量";
WFrame.OffdrawPic(0,0,offscreen);
g.drawImage( copy,0,0,Graphics.LEFT|Graphics.TOP);
g.setColor(0x00ddffee);
g.setFont(Font.getFont(Font.FACE_SYSTEM ,Font.STYLE_BOLD,Font.SIZE_LARGE));
g.drawString(ss1,4,3,Graphics.TOP |Graphics.LEFT );
g.setColor(0x00fffe57) ;
g.drawString(ss3,0,77,Graphics.TOP |Graphics.LEFT );
}
//女孩总局胜利画面
else if(total_winner==8){
ss1="女孩赢得冠军!" ;
ss3="按5开新的较量";
WFrame.OffdrawPic(0,0,offscreen);
g.drawImage( copy,0,0,Graphics.LEFT|Graphics.TOP);
g.setColor(0x00ccffff);
g.setFont(Font.getFont(Font.FACE_SYSTEM ,Font.STYLE_BOLD,Font.SIZE_LARGE));
g.drawString(ss1,4,3,Graphics.TOP |Graphics.LEFT );
g.setColor(0x00fffe57) ;
g.drawString(ss3,0,77,Graphics.TOP |Graphics.LEFT );
}
}
}
//游戏帮助界面
else if((start==1)&&(index==2)){
g.setColor(0x00000000) ;
g.fillRect(0, 0,this.getWidth(), this.getHeight());
g.setColor(0x00abcdef) ;
g.setFont(Font.getFont(Font.FACE_SYSTEM ,Font.STYLE_BOLD,Font.SIZE_SMALL));
String ss1="本游戏可供2人在闲暇时" ;
String ss2="间娱乐4控制左边的蓝色" ;
String ss3="移动方块水平向右撞击;" ;
String ss4="5控制黄色移动方块向左" ;
String ss5="撞击;中间共有3个粉色";
String ss6="方块,若被撞击则移动一";
String ss7="格,移动3格会下落;不要";
String ss9="让自己被砸倒哦^^";
String ss8="按5返回" ;
g.drawString(ss1, 1, 1,Graphics.TOP |Graphics.LEFT ) ;
g.drawString(ss2,1,12, Graphics.TOP |Graphics.LEFT) ;
g.drawString(ss3, 1, 23, Graphics.TOP |Graphics.LEFT) ;
g.drawString(ss4, 1, 34, Graphics.TOP |Graphics.LEFT) ;
g.drawString(ss5, 1, 45, Graphics.TOP |Graphics.LEFT) ;
g.drawString(ss6, 1, 56, Graphics.TOP |Graphics.LEFT) ;
g.drawString(ss7, 1, 67, Graphics.TOP |Graphics.LEFT) ;
g.drawString(ss9, 1, 78, Graphics.TOP |Graphics.LEFT) ;
// g.drawString(ss10, 1, 89, Graphics.TOP |Graphics.LEFT) ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -