📄 gamecanvas.java
字号:
man.setAlive(false);
}
//抓取东西
if((man.getX()+17>111)
&&(man.getX()+17<128)
&&(man.getY()+22>44)
&&(man.getY()+22<75)&&!jumpCan&&manState!=0){
if(p<1){
empty();
man.setState(5);
tmpX=115;
man.setX(tmpX);
tmpY=54;
man.setY(tmpY);
jumpCan=true;
manState=0;
jumpUD=10;
}else{
man.setAlive(false);
}
}
}
void empty(){
for(int i=0;i<9;i++){
board1[i][5]=0;
}
for(int i=0;i<9;i++){
board2[i][5]=0;
}
for(int i=0;i<9;i++){
board3[i][5]=0;
}
for(int i=0;i<9;i++){
board4[i][5]=0;
}
}
void win(){
if(man.getState()==5){
if((man.getX()>0)
&&(man.getX()<25)
&&(man.getY()+21>45)
&&(man.getY()+21<78)){
tmpX=0;
man.setX(tmpX);
tmpY=54;
man.setY(tmpY);
win=true;
}
}else if(man.getState()==3){
if((man.getX()>0)
&&(man.getX()<17)
&&(man.getY()+21>45)
&&(man.getY()+21<78)){
empty();
tmpX=0;
man.setX(tmpX);
tmpY=54;
man.setY(tmpY);
manState=0;
man.setState(2);
jumpCan=true;
}
}
}
boolean crash(int x,int y,int m,int s,int have){
if(STATE!=1&&STATE!=2){
if((man.getX()>x)
&&(man.getX()<x+img1.getWidth())
&&(y>man.getY())
&&(y<man.getY()+man.getHeight()-4)){
man.setAlive(false);
}
if((man.getX()+man.getWidth()>x)
&&(man.getX()+man.getWidth()<x+img1.getWidth())
&&(y>man.getY())
&&(y<man.getY()+man.getHeight()-4)){
man.setAlive(false);
}
}
if((man.getX()+8>x)
&&(man.getX()+8<x+21)
&&(man.getY()+man.getHeight()>=y-30)
&&(man.getY()+man.getHeight()<y)){
if(man.getState()==3){
man.setState(1);
}else if(man.getState()==4){
man.setState(2);
}
if(have==1){//有障碍
man.setAlive(false);
}else{
if(have==2)
p--;
if(p<0)p=0;
jumpCan=true;
manState=m;
if(s==1){
jumpUD=1;
}else if(s==2){
jumpUD=0;
}else if(s==3){
jumpUD=2;
}else{
jumpUD=10;
}
man.setX(x+2);
man.setY(y-21-speed[m-1]);
}
return true;
}else{
return false;
}
}
void moveLeft(){
v=(int)(v-a*t);
s=(int)(v*t);
tmpY =man.getY()-s;
man.setY(tmpY);
tmpX =man.getX()-5;
man.setX(tmpX);
crash2();
}
void moveRight(){
v=(int)(v-a*t);
s=(int)(v*t);
tmpY =man.getY()-s;
man.setY(tmpY);
tmpX =man.getX()+5;
man.setX(tmpX);
crash2();
}
void moveUp(){
tmpY=man.getY()-7;
man.setY(tmpY);
}
void moveDown(){
tmpY=man.getY()+3;
man.setY(tmpY);
}
void doMove(){
for(int i=0;i<9;i++){
if(man.isAlive()&&!jumpCan&&board1[i][5]==0){
if(board1[i][2]==10||board1[i][2]==11){//如果是可以吃的东西
if(crash(board1[i][0],board1[i][1], 1,board1[i][4],2)){
board1[i][2]=0;
empty();
board1[i][5]=1;
}
}else if(board1[i][2]==0){
if(crash(board1[i][0],board1[i][1], 1,board1[i][4],0)){
empty();
board1[i][5]=1;
}
}else if(board1[i][2]!=0&&board1[i][2]!=10&&board1[i][2]!=11){
if(crash(board1[i][0],board1[i][1], 1,board1[i][4],1)){
empty();
board1[i][5]=1;
}
}
}
board1[i][1]=board1[i][1]-speed[0];
if(speed[0]>0){//如果是板子向上运动
if(board1[i][1]<=-69){
board1[i][1]=273;
}
}else{
if(board1[i][1]>=311){
board1[i][1]=-31;
}
}
}
for(int i=0;i<9;i++){
if(man.isAlive()&&!jumpCan&&board2[i][5]==0){
if(board2[i][2]==10||board2[i][2]==11){//如果是可以吃的东西
if(crash(board2[i][0],board2[i][1], 2,board2[i][4],2)){
board2[i][2]=0;
empty();
board2[i][5]=1;
}
}else if(board2[i][2]==0){
if(crash(board2[i][0],board2[i][1], 2,board2[i][4],0)){
empty();
board2[i][5]=1;
}
}else if(board2[i][2]!=0&&board2[i][2]!=10&&board2[i][2]!=11){
if(crash(board2[i][0],board2[i][1], 2,board2[i][4],1)){
empty();
board2[i][5]=1;
}
}
}
board2[i][1]=board2[i][1]-speed[1];
if(speed[1]>0){//如果是板子向上运动
if(board2[i][1]<=-69){
board2[i][1]=273;
}
}else{
if(board2[i][1]>=311){
board2[i][1]=-31;
}
}
}
for(int i=0;i<9;i++){
if(man.isAlive()&&!jumpCan&&board3[i][5]==0){
if(board3[i][2]==10||board3[i][2]==11){//如果是可以吃的东西
if(crash(board3[i][0],board3[i][1], 3,board3[i][4],2)){
board3[i][2]=0;
empty();
board3[i][5]=1;
}
}else if(board3[i][2]==0){
if(crash(board3[i][0],board3[i][1], 3,board3[i][4],0)){
empty();
board3[i][5]=1;
}
}else if(board3[i][2]!=0&&board3[i][2]!=10&&board3[i][2]!=11){
if(crash(board3[i][0],board3[i][1], 3,board3[i][4],1)){
empty();
board3[i][5]=1;
}
}
}
board3[i][1]=board3[i][1]-speed[2];
if(speed[2]>0){
if(board3[i][1]<=-69){
board3[i][1]=273;
}
}else{
if(board3[i][1]>=311){
board3[i][1]=-31;
}
}
}
for(int i=0;i<9;i++){
if(man.isAlive()&&!jumpCan&&board4[i][5]==0){
if(board4[i][2]==10||board4[i][2]==11){//如果是可以吃的东西
if(crash(board4[i][0],board4[i][1], 4,board4[i][4],2)){
board4[i][2]=0;
empty();
board4[i][5]=1;
}
}else if(board4[i][2]==0){
if(crash(board4[i][0],board4[i][1], 4,board4[i][4],0)){
empty();
board4[i][5]=1;
}
}else if(board4[i][2]!=0&&board4[i][2]!=10&&board4[i][2]!=11){
if(crash(board4[i][0],board4[i][1], 4,board4[i][4],1)){
empty();
board4[i][5]=1;
}
}
}
board4[i][1]=board4[i][1]-speed[3];
if(speed[3]>0){
if(board4[i][1]<=-69){
board4[i][1]=273;
}
}else{
if(board4[i][1]>=311){
board4[i][1]=-31;
}
}
}
}
// int tmpKey;
public void run() {
try {
switch(gameState) {
case GAME_START:
removeCommand(exitCmd);
repaint();
Thread.sleep(1500);
addCommand(quitCmd);
if(! isPaused) {
addCommand(pauseCmd);
}
gameState = GAME_PLAYING;
case GAME_PLAYING:
while(!isStopped) {
//再描绘
// if (tmpKey==-6){
man.doMove();
ms++;
if(ms>10){//一秒执行一次
ms=0;
second=(second-1)%60;
if(second==0){
second=59;
minute=minute-1;
if(minute==0)
isGameOver=true;
}
}
if(jumpCan&&manState!=0){
tmpY2=man.getY()-speed[manState-1];
man.setY(tmpY2);
}
if(man.getY()+man.meLeft.getHeight()<0||man.getY()>128)
man.setAlive(false);
if(STATE==1&&!jumpCan&&man.isAlive()){
moveUp();
}
if(STATE==2&&!jumpCan&&man.isAlive()){
moveDown();
}
if(STATE==3&&!jumpCan&&man.isAlive()){
moveLeft();
}
if(STATE==4&&!jumpCan&&man.isAlive()){
moveRight();
}
doMove();
win();
repaint();
// this.serviceRepaints();
if(GameOver){
p2--;
if(p2<1){
isGameOver=true;
}else{
Thread.sleep(1500);
Init();
GameInit();//重新开始
GameOver=false;
}
}
if(isGameOver) {
removeCommand(pauseCmd);
removeCommand(resumeCmd);
removeCommand(quitCmd);
doGameStop();
gameState = GAME_END;
repaint();
Thread.sleep(2000);
doTitle();
break;
}else {
//游戏未结束时
if(win){
Thread.sleep(2000);
minute=2;
second=59;
level++;//进入下一关
Init();
GameInit();
win=false;
}
Thread.sleep(100);
}
// tmpKey=0;
// }
}//end while
break;
}
}catch(Exception e) {}
}
}//end class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -