📄 maincanvas.java
字号:
//在得50分内每隔10分,使系统反应时间加快1秒,增加难度
if ((m_Record.getCurRecord() <= 50) && (m_Record.getCurRecord() % 10 == 0)) {
time -= 2;
}
if ((m_Record.getCurRecord() <= 200) && (m_Record.getCurRecord() % 30 == 0)) {
time -= 3;
}
if ((m_Record.getCurRecord() > 200) && (m_Record.getCurRecord() % 50 == 0)) {
time -= 5;
}
m_GunAim.m_AimSp.setPosition(m_GunAim.m_GunSp.getX(), -10); //使子弹在最上面,不会再向上自动飞
break;
}
}
}
/********************************************************************************
检验子弹是否和射中敌人飞机
*******************************************************************************/
for (int n = 0; n < m_GunAim.m_playerSp.length; n++) {
if (m_GunAim.m_AimSp.collidesWith(m_GunAim.m_playerSp[n], true)) {//如果打中飞机,则增加生命
m_nLife += 3;
SoundPlayer.getInstance().playExplodeSound();
m_GunAim.bomb(m_GunAim.m_AimSp.getX(), m_GunAim.m_AimSp.getY());
if (n == 0)//从0(左边向右飞)开始的飞机则回到出发点,最左边
{
m_GunAim.m_playerSp[n].setPosition(0, m_GunAim.m_playerSp[n].getY());
} else //(右边向左飞)开始的飞机则回到出发点,最右边
{
m_GunAim.m_playerSp[n].setPosition(getWidth(), m_GunAim.m_playerSp[n].getY());
}
break;
}
}
/********************************************************************************
检验子弹是否和敌人飞机炸弹碰撞,是则一起爆炸失效
*******************************************************************************/
for (int n = 0; n < m_GunAim.m_bulletSp.length; n++) {
if (m_GunAim.m_AimSp.collidesWith(m_GunAim.m_bulletSp[n], true)) {
SoundPlayer.getInstance().playExplodeSound();
m_GunAim.bomb(m_GunAim.m_AimSp.getX(), m_GunAim.m_AimSp.getY());
m_GunAim.m_bulletSp[n].setPosition(300, 300);
m_GunAim.m_AimSp.setPosition(300, 300);
break;
}
}
/*****************************************************************************************
检验枪是否被敌人飞机炸弹射中
*******************************************************************************************/
for (int n = 0; n < m_GunAim.m_bulletSp.length; n++) {
if (m_GunAim.m_GunSp.collidesWith(m_GunAim.m_bulletSp[n], true)) {//如果敌人炸弹射中,则结束生命
m_nLife = 0;
SoundPlayer.getInstance().playExplodeSound();
m_GunAim.bomb(m_GunAim.m_GunSp.getX(), m_GunAim.m_GunSp.getY());
m_GunAim.m_bulletSp[n].setPosition(300, 300);
break;
}
}
break;
case GAME_BUTTON: //游戏中途显示按钮
{
switch (m_UI.Input(keyStates)) {
case MyButton.BUTTON_RESET: //按下复位键
Reset();
setState(GAME_GAMING);
break;
case MyButton.BUTTON_EXIT: //按下退出键
CSMidlet.midlet.notifyDestroyed();
break;
}
}
break;
case GAME_END:
if ((keyStates & GameCanvas.FIRE_PRESSED) != 0) {
Reset();
setState(GAME_GAMING);
}
break;
}
}
public void Logic() {
switch (m_nState) {
case GAME_GAMING:
m_GunAim.Logic();
for (int n = 0; n < m_aEnemy.length; n++) {
m_aEnemy[n].Logic();
if (m_aEnemy[n].getState() == EnemySprite.ENEMY_FIRE) {//如果敌人开火,则减少生命值
m_nLife--;
if (m_nLife <= 0) //失去生命,游戏结束
{
setState(GAME_END);
}
break;
}
}
CreateEnemy();
break;
case GAME_END:
//不断更改m_nPosY的值,实现文字滚屏
m_nPosY++;
//如果文字已滚至屏幕最下方,则重新设置文字的纵坐标
if (m_nPosY > getHeight()) {
m_nPosY = 0;
}
break;
}
}
public void Paint() {
Graphics g = getGraphics();
//用黑色清屏
g.setColor(0);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0xFFFF0000);
switch (m_nState) {
case GAME_UI: //显示界面
m_UI.Paint(g, getWidth(), getHeight());
//m_UI.append(new StringItem(null,"由达赖组织策划的部分僧人参加的'314打砸抢烧'事件,于是我们反对藏独的正义之站拉开了"));
break;
case GAME_GAMING: //显示游戏画面
case GAME_BUTTON:
//显示敌人
for (int n = 0; n < m_aEnemy.length; n++) {//按先后顺序,后面的能覆盖在前面图画
m_aEnemy[n].paint(g);
}
//显示背景
m_Back.Paint(g, getWidth(), getHeight());
//显示枪和准心
m_GunAim.Paint(g);
//显示生命值
StringBuffer buff = new StringBuffer();
buff.append("Life:");
buff.append(m_nLife);
g.drawString(buff.toString(), 5, 5, 0);
StringBuffer buff2 = new StringBuffer();
buff2.append("Score:");
buff2.append(m_Record.getCurRecord());
g.drawString(buff2.toString(), 190, 5, 0);
m_UI.Paint(g, getWidth(), getHeight());
break;
case GAME_END:
m_Back.Paint(g, getWidth(), getHeight());
m_Record.Paint(g, getWidth(), getHeight());
g.setFont(m_aFont);
g.drawString("This game belongs to the kind of", 35, m_nPosY - 5, 0);
g.drawString("shooting game.It is very interes-", 35, m_nPosY - 20, 0);
g.drawString("ting and meaningful for us.", 35, m_nPosY - 35, 0);
g.drawString("Because we spend lots of the ", 35, m_nPosY - 50, 0);
g.drawString("time on it. It is the crystallization", 35, m_nPosY - 65, 0);
g.drawString("of our teamwork.Thanks to it,", 35, m_nPosY - 80, 0);
g.drawString("we meet each other and work to-", 35, m_nPosY - 95, 0);
g.drawString("gether.Finally wish you have a ", 35, m_nPosY - 110, 0);
g.drawString("enjoyable trip and good luck!", 35, m_nPosY - 125, 0);
g.drawString("From :", 35, m_nPosY - 150, 0);
g.drawString(" 华南农业大学", 35, m_nPosY - 165, 0);
break;
}
flushGraphics();
}
public void commandAction(Command c, Displayable s) {
if (c == MenuCommand) {
switch (m_nState) {
case GAME_END: //游戏结束,显示按钮
case GAME_GAMING: //正在游戏,显示按钮
setState(GAME_BUTTON);
break;
case GAME_BUTTON: //正显示按钮,退回游戏
setState(GAME_GAMING);
break;
default:
break;
}
}
if(c == HelpCommand)
{
m_UI.setState(MyUI.UI_HIDE);
m_About=new About();
// CSMidlet.midlet.notifyDestroyed();
// m_UI.setState(MyUI.UI_HIDE);
}
}
//随机产生新敌人
private void CreateEnemy() {
int rs = Math.abs(m_Random.nextInt() % 20);
if (rs >= 6) {
return;
}
if (m_aEnemy[rs].getState() == EnemySprite.ENEMY_HIDE) {
m_aEnemy[rs].setState(EnemySprite.ENEMY_NORMAL);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -