📄 gamecanvas.java
字号:
g.setColor(0x00fffe57) ;
g.setFont(Font.getFont(Font.FACE_SYSTEM ,Font.STYLE_BOLD,Font.SIZE_SMALL));
g.drawString(ss8, 40, 89,Graphics.TOP |Graphics.LEFT);
}
//游戏作者介绍
else if((start==1)&&(index==3)){
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_LARGE));
String ss1="天才李峰制作^o^" ;
String ss8="按5返回" ;
g.drawString(ss1, 1, 20,Graphics.TOP |Graphics.LEFT ) ;
g.setColor(0x00fffe57) ;
g.setFont(Font.getFont(Font.FACE_SYSTEM ,Font.STYLE_BOLD,Font.SIZE_LARGE));
g.drawString(ss8, 40, 76,Graphics.TOP |Graphics.LEFT);
}
else{
// 游戏最开始的一次性画面
if(start==0){
WinnerFrame.OffdrawPic(0,0,offscreen);
g.drawImage(copy,0,0,Graphics.LEFT |Graphics.TOP );
String st1="疯狂对对碰" ;
String st2="开始游戏" ;
String st3="游戏规则";
String st4="关于作者" ;
g.setColor(0x0081ff21);
g.setFont(Font.getFont(Font.FACE_SYSTEM ,Font.STYLE_BOLD,Font.SIZE_LARGE));
g.drawString(st1,27,3,Graphics.TOP |Graphics.LEFT );
g.setColor(0x00ba4521);
g.setFont(Font.getFont(Font.FACE_SYSTEM ,Font.STYLE_BOLD,Font.SIZE_MEDIUM));
g.drawString(st2,18,45,Graphics.TOP |Graphics.LEFT );
g.drawString(st3,18,59,Graphics.TOP|Graphics.LEFT);
g.drawString(st4,18,73,Graphics.TOP|Graphics.LEFT);
g.setColor(0x00ffddee);
g.drawRect(10,45 + (index - 1) * 14,80,14);
}
}
}
public void run() {
while(true){
playGame() ;
try{
Thread.sleep(5) ;
}catch(InterruptedException e){
System.out.println("sleep error :"
+e.getMessage()) ;
}
}
}
protected void playGame(){
if(!pause){
this.Lmove();
this.Rmove();
this.Push() ;
this.Push_Fall();
}
repaint() ;
}
public void start(){
Thread t = new Thread(this) ;
t.start();
}
public void startButton(){
pause=false ;
}
public void pause(){
pause=true;
}
protected void Lmove(){
//垂直运动
if(LIsPressed==0){
if((MLBrick_Hflag==0)&&(LMBrick_Top_y>UP_MAX)){
LMBrick_Top_y=LMBrick_Top_y-HSPEED ;
}
else if((MLBrick_Hflag==0)&&(LMBrick_Top_y<=UP_MAX)){
MLBrick_Hflag=1 ;
}
else if((MLBrick_Hflag==1)&&(LMBrick_Top_y<DOWN_MAX)){
LMBrick_Top_y=LMBrick_Top_y+HSPEED ;
}
else if((MLBrick_Hflag==1)&&(LMBrick_Top_y>=DOWN_MAX)){
MLBrick_Hflag=0 ;
}
}
//水平运动
int Rmax ; //向右最大距离
if(Boy_Push>=0&&Boy_Push<=2){
Rmax=LM_MAXRIGHT[Boy_Push] ;
}
else{
Rmax=PBrick_Place_Top_x[0]-26;
}
if((MLBrick_Wflag==1)&&(LMBrick_Top_x<Rmax)){
LMBrick_Top_x=LMBrick_Top_x+WSPEED ;
}
else if((MLBrick_Wflag==1)&&LMBrick_Top_x>=Rmax){
MLBrick_Wflag=-1 ;
if(Boy_Push>=0&&Boy_Push<=2){
style[Boy_Push]=style[Boy_Push]+1 ;
}
}
else if((MLBrick_Wflag==-1)&&LMBrick_Top_x>LEFT_MAX){
LMBrick_Top_x=LMBrick_Top_x-WSPEED ;
}
else if((MLBrick_Wflag==-1)&&LMBrick_Top_x<=LEFT_MAX){
MLBrick_Wflag=0 ;
LIsPressed=0 ;
Boy_Push=8;
}
}
protected void Rmove(){
//垂直运动
if(RIsPressed==0){
if((MRBrick_Hflag==0)&&(RMBrick_Top_y>UP_MAX)){
RMBrick_Top_y=RMBrick_Top_y-HSPEED ;
}
else if((MRBrick_Hflag==0)&&(RMBrick_Top_y<=UP_MAX)){
MRBrick_Hflag=1 ;
}
else if((MRBrick_Hflag==1)&&(RMBrick_Top_y<DOWN_MAX)){
RMBrick_Top_y=RMBrick_Top_y+HSPEED ;
}
else if((MRBrick_Hflag==1)&&(RMBrick_Top_y>=DOWN_MAX)){
MRBrick_Hflag=0 ;
}
}
//水平运动
int Lmax ;
if(Girl_Push>=0&&Girl_Push<=2){
Lmax=RM_MAXLEFT[Girl_Push] ;
}
else{
Lmax=PBrick_Place_Bottom_x;
}
if((MRBrick_Wflag==1)&&(RMBrick_Top_x<RIGHT_MAX)){
RMBrick_Top_x=RMBrick_Top_x+WSPEED ;
}
else if((MRBrick_Wflag==1)&&RMBrick_Top_x>=RIGHT_MAX){
MRBrick_Wflag=0 ;
RIsPressed=0 ;
Girl_Push=8;
}
else if((MRBrick_Wflag==-1)&&RMBrick_Top_x>Lmax){
RMBrick_Top_x=RMBrick_Top_x-WSPEED ;
}
else if((MRBrick_Wflag==-1)&&RMBrick_Top_x<=Lmax){
MRBrick_Wflag=1 ;
if(Girl_Push>=0&&Girl_Push<=2)
style[Girl_Push]=style[Girl_Push]-1 ;
}
}
//推动方块
protected void Push(){
if(Boy_Push>=0&&Boy_Push<=2){
if((LMBrick_Top_x+26>=PBrick_Top_x[Boy_Push])&&(PBrick_Top_x[Boy_Push]<LM_MAXRIGHT[Boy_Push]+26)){
PBrick_Top_x[Boy_Push]=PBrick_Top_x[Boy_Push]+WSPEED ;
}
// else if(PBrick_Top_x[Boy_Push]>=LM_MAXRIGHT[Boy_Push]+25){
// Push_Flag[Boy_Push]=0 ;
// }
}
if(Girl_Push>=0&&Girl_Push<=2){
if((RMBrick_Top_x-24<=PBrick_Top_x[Girl_Push])&&(PBrick_Top_x[Girl_Push]>RM_MAXLEFT[Girl_Push]-24)){
PBrick_Top_x[Girl_Push]=PBrick_Top_x[Girl_Push]-WSPEED ;
}
// else if(PBrick_Top_x[Girl_Push]<=RM_MAXLEFT[Girl_Push]-24){
// Push_Flag[Girl_Push]=0 ;
// }
}
}
//方块下落事件
protected void Push_Fall(){
for(int t=0;t<3;t++){
if(((style[t]==3)||(style[t]==-3))&&PBrick_Top_y[t]<(boy_y-Push_Brick.get_height())){
PBrick_Top_y[t]=PBrick_Top_y[t]+FSPEED ;
FallFlag=1 ;
// break;
}
else if(((style[t]==3)||(style[t]==-3))&&PBrick_Top_y[t]>=(boy_y-Push_Brick.get_height())){
Swinner_event(style[t]);
style[t]=0 ;
break;
}
}
}
//单局胜负事件
protected void Swinner_event(int sty){
if(sty>0){
boy_win_num=boy_win_num+1 ;
now_winner=1 ;
}
else{
girl_win_num=girl_win_num+1 ;
now_winner=8 ;
}
if((boy_win_num==3)||(girl_win_num==3)){
total_winner=now_winner ;
}
}
//男孩方块推动引发的事件
protected void boyPush(){
if(LIsPressed==0){
LIsPressed=1 ;
MLBrick_Wflag=1 ;
for(int i=0;i<3 ;i++){
if(LMBrick_Top_y>=PBrick_Place_Top_y[i]&&LMBrick_Top_y<=PBrick_Place_Top_y[i]+6){
LM_MAXRIGHT[i]=LM_MAXRIGHT[i]+(Push_Brick.get_width()/3);
RM_MAXLEFT[i]=RM_MAXLEFT[i]+(Push_Brick.get_width()/3);
Push_Flag[i]=1 ;
Boy_Push=i ;
break;
}
}
}
}
//
protected void girlPush(){
if(RIsPressed==0){
RIsPressed=1 ;
MRBrick_Wflag=-1 ;
for(int i=0;i<3;i++){
if(RMBrick_Top_y>=PBrick_Place_Top_y[i]&&RMBrick_Top_y<=PBrick_Place_Top_y[i]+6){
RM_MAXLEFT[i]=RM_MAXLEFT[i]-(Push_Brick.get_width()/3);
LM_MAXRIGHT[i]=LM_MAXRIGHT[i]-(Push_Brick.get_width()/3);
Push_Flag[i]=-1 ;
Girl_Push=i ;
break ;
}
}
}
}
//单局返回
protected void returnSGame(){
System.out.println(total_winner);
now_winner=0 ;
S_iniGame();
}
//开始新游戏
protected void returnTGame(){
now_winner=0 ;
total_winner=0 ;
T_iniGame() ;
}
protected synchronized void keyPressed(int keyCode) {
// 如果游戏暂停,则按键无效
if (pause)
return;
//游戏中按键接受
switch (keyCode){
case KEY_NUM4:
if((now_winner==0)&&(total_winner==0)&&(FallFlag==0)){
boyPush();
}
break;
case KEY_NUM6:
if((now_winner==0)&&(total_winner==0)&&(FallFlag==0)){
girlPush();
}
break;
case KEY_NUM5:
if(start==0){
start=1 ;
break;
}
if(start==1&&(index==2||index==3)){
start=0 ;
}
// 单局胜利画面按键接收
if((total_winner==0)&&(now_winner!=0)){
returnSGame();
}
else if(total_winner!=0){
returnTGame();
}
break;
case KEY_NUM2:
// case Canvas.UP:
if(start==0){
if(index==1)
index=3;
else
index=index-1 ;
}
break;
// case Canvas.DOWN:
case KEY_NUM8:
if(start==0){
if(index==3)
index=1 ;
else
index=index+1 ;
}
break;
}//end case
}//end keyPressed
}//end class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -