/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package yokoshoot218.jp.ohtsuki.minigame;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.sound.sampled.Clip;
public class YokoShootMainApplet extends GameHoneGumiApplet {
public static final int GAMEN_W = 624;
public static final int GAMEN_H = 480;
BufferedImage charaimage1,charaimage2,charaimage3,tikeiimage, startimage, biBoss, biJiki, biItem,backimage1,bitimage,biBoss2,biBoss3,biBoss4,biBoss5,biBoss6,biBoss7,backgasimage,backimage2,backimage3,backimage4,backimage5,backimage6,kowareimage,barrierimage,loveimage;
Jiki jiki;
int zanki = 6;
int iHappy = 0;
int iHeart = 0;
Bit bit;
Boss boss;
Barrier barrier;
Boss2 boss2;
boolean upkey, downkey, rightkey, leftkey, spacekey;
ArrayList jikitamas, tekis, tekitamas, bakuhatsus, items, kowares;
int rensya=0;
int tekitamarate = 100;
int score, highscore, stagenum=1;
Clip seClip1,seClip2,seClip3,seClip4,seClip5;
int iBackgroundX = 0;
int iBackgroundX2 = 0;
TikeiMap tikeimap;
Koware koware;
int iBossTairyoku = 20;
int barrierup = 10;
boolean barrierflag = false;
int iGotItemNum = 0;
public void init() {
super.init(GAMEN_W, GAMEN_H, "GAME");
setBackground(Color.BLACK);
try {
charaimage1 = ImageIO.read(getClass().getResource("chara01.PNG"));
charaimage2 = ImageIO.read(getClass().getResource("chara02.PNG"));
charaimage3 = ImageIO.read(getClass().getResource("chara03.png"));
bitimage = ImageIO.read(getClass().getResource("bit.png"));
backimage1 = ImageIO.read(getClass().getResource("bg1.png"));
backimage2 = ImageIO.read(getClass().getResource("bg2.png"));
backimage3 = ImageIO.read(getClass().getResource("bg3.png"));
backimage4 = ImageIO.read(getClass().getResource("bg4.png"));
backimage5 = ImageIO.read(getClass().getResource("bg5.png"));
backimage6 = ImageIO.read(getClass().getResource("bg6.png"));
backgasimage = ImageIO.read(getClass().getResource("backgas.png"));
tikeiimage = ImageIO.read(getClass().getResource("tikeidata01.PNG"));
barrierimage = ImageIO.read(getClass().getResource("barrier.png"));
kowareimage = ImageIO.read(getClass().getResource("tikeidata01.PNG"));
startimage = ImageIO.read(getClass().getResource("start.jpg"));
biBoss = ImageIO.read(getClass().getResource("boss.png"));
biBoss2 = ImageIO.read(getClass().getResource("boss2.png"));
biBoss3 = ImageIO.read(getClass().getResource("boss3.png"));
biBoss4 = ImageIO.read(getClass().getResource("boss4.png"));
biBoss5 = ImageIO.read(getClass().getResource("boss5.png"));
biBoss6 = ImageIO.read(getClass().getResource("boss6.png"));
biBoss7 = ImageIO.read(getClass().getResource("boss7.png"));
biJiki = ImageIO.read(getClass().getResource("jiki.png"));
biItem = ImageIO.read(getClass().getResource("power.png"));
loveimage = ImageIO.read(getClass().getResource("love.png"));
} catch (IOException e) {
e.printStackTrace();
}
seClip1 = otoYomikomi("burst01.wav");
seClip2 = otoYomikomi("fm005.wav");
seClip3 = otoYomikomi("smoke03.wav");
seClip4 = otoYomikomi("pow.wav");
seClip5 = otoYomikomi("se_sac03.wav");
goStartGamen();
}
public void initStageStart() {
jiki = new Jiki(GAMEN_W/2,GAMEN_H/2,biJiki);
jikitamas = new ArrayList();
tekis = new ArrayList();
tekitamas = new ArrayList();
bakuhatsus = new ArrayList();
items = new ArrayList();
kowares = new ArrayList();
upkey=false; downkey=false; rightkey=false;
leftkey=false;
tikeimap = new TikeiMap(tikeiimage,"00" + stagenum + ".map","001.pat");
koware = new Koware(tikeiimage,"00" + stagenum + ".map","001.pat");
if (gamemainstate == GM_ZAKO) {
midiseq.setTickPosition(0);
midiseq.start();
}
public void initStageClear() {
stagenum = stagenum+1;
if(stagenum > 6)stagenum=1;
score = score + stagenum * 100;
if(score%1000 == 0)zanki++;
iBackgroundX = 0;
midiseq.stop();
iBossTairyoku = (40*stagenum)/2;
}
public void initGameOver() {
if (score>highscore) highscore = score;
score = 0;
iHappy = 0;
iHeart = 0;
iBackgroundX = 0;
iBackgroundX2 = 0;
iGotItemNum = 0;
barrierup = 10;
barrierflag = false;
midiseq.stop();
seClip3.setFramePosition(0);
seClip3.start();
iBossTairyoku = 100;
zanki--;
gamemainstate = GM_ZAKO;
stagenum++;
if(stagenum >= 7)stagenum = 1;
}
public void keyPressedGameMain(int key) {
if (key==KeyEvent.VK_UP) upkey=true;
if (key==KeyEvent.VK_DOWN) downkey=true;
if (key==KeyEvent.VK_LEFT) leftkey=true;
if (key==KeyEvent.VK_RIGHT) rightkey=true;
//if (key==KeyEvent.VK_SPACE) spacekey=true;
jiki.setKey(upkey, downkey);
}
public void keyReleasedGameMain(int key) {
if (key==KeyEvent.VK_UP) upkey=false;
if (key==KeyEvent.VK_DOWN) downkey=false;
if (key==KeyEvent.VK_LEFT) leftkey=false;
if (key==KeyEvent.VK_RIGHT) rightkey=false;
//if (key==KeyEvent.VK_SPACE) spacekey=false;
jiki.setKey(upkey, downkey);
}
public void runStartGamen(Graphics g) {
g.drawImage(startimage,0,0,this);
g.setFont(new Font("SansSerif",Font.PLAIN,24));
drawStringCenter("コントローラーの 1 のボタンをおすとはじまるよ",20,g);
}
public void runStageStart(Graphics g) {
g.setColor(Color.BLACK);
g.fillRect(0,0,GAMEN_W,GAMEN_H);
g.setColor(Color.CYAN);
g.setFont(new Font("SansSerif",Font.BOLD,60));
drawStringCenter("ステージ"+ stagenum,200,g);
drawStringCenter("ゲームスタート!",280,g);
spacekey=false;
}
public void runStageClear(Graphics g) {
g.setColor(Color.CYAN);
g.setFont(new Font("SansSerif",Font.BOLD,60));
drawStringCenter("ステージクリアー",200,g);
}
public void runGameMain(Graphics g) {
g.clearRect(0,0,GAMEN_W,GAMEN_H);
iBackgroundX-=2;
if (iBackgroundX < -1600) {
iBackgroundX = 0;
}
if(stagenum == 1){
g.drawImage(backimage1 ,iBackgroundX,0,this);
g.drawImage(backimage1 ,iBackgroundX + 1600,0,this);
}else if(stagenum == 2){
g.drawImage(backimage2 ,iBackgroundX,0,this);
g.drawImage(backimage2 ,iBackgroundX + 1600,0,this);
}else if(stagenum == 3){
g.drawImage(backimage3 ,iBackgroundX,0,this);
g.drawImage(backimage3 ,iBackgroundX + 1600,0,this);
}else if(stagenum == 4){
g.drawImage(backimage4 ,iBackgroundX,0,this);
g.drawImage(backimage4 ,iBackgroundX + 1600,0,this);
}else if(stagenum == 5){
g.drawImage(backimage5 ,iBackgroundX,0,this);
g.drawImage(backimage5 ,iBackgroundX + 1600,0,this);
}else{
g.drawImage(backimage6 ,iBackgroundX,0,this);
g.drawImage(backimage6 ,iBackgroundX + 1600,0,this);
}
iBackgroundX2-=3;
if (iBackgroundX2 < -1600) {
iBackgroundX2 = 0;
}
g.drawImage(backgasimage,iBackgroundX2,0,this);
g.drawImage(backgasimage,iBackgroundX2 + 1600,0,this);
Jiki jikiCheck = jiki.getTest();
jikiCheck.move(upkey,downkey,leftkey,rightkey);
if(tikeimap.isAtari(jikiCheck.getx1(),jikiCheck.gety1())==true ||
tikeimap.isAtari(jikiCheck.getx2(),jikiCheck.gety2())==true) {
jiki.osare();
}else if(koware.isAtari(jikiCheck.getx1(),jikiCheck.gety1())==true ||
koware.isAtari(jikiCheck.getx2(),jikiCheck.gety2())==true) {
jiki.osare();
}
else {
jiki.move(upkey,downkey,leftkey,rightkey);
}
if (jiki.isSotoNiDeta()) {
goGameOver();
}
if (spacekey == true && rensya==0){
jikitamas.add(new JikiTama(jiki.chara_x+36,
jiki.chara_y+24,charaimage1,12, 0));
if (iGotItemNum >= 3) {
jikitamas.add(new
JikiTama(jiki.chara_x+36,jiki.chara_y+24,charaimage1, 12, -4));
}
if (iGotItemNum >= 4) {
jikitamas.add(new JikiTama(jiki.chara_x+36,jiki.chara_y+24,charaimage1, 12, 4));
}
if (iGotItemNum >= 5) {
jikitamas.add(new JikiTama(jiki.chara_x,jiki.chara_y+24,charaimage1, -12, -4));
}
if (iGotItemNum >= 6) {
jikitamas.add(new JikiTama(jiki.chara_x,jiki.chara_y+24,charaimage1, -12, 4));
}
if (iGotItemNum >= 8) {
jikitamas.add(new JikiTama(jiki.chara_x-24,jiki.chara_y+48,charaimage1, 12, 0));
}
if (iGotItemNum >= 10) {
jikitamas.add(new JikiTama(jiki.chara_x-24,jiki.chara_y-36,charaimage1, 12, 0));
}
rensya = 30;
}
if (iGotItemNum >= 8) {
bit = new Bit(jiki.chara_x-48,jiki.chara_y+48,bitimage);
bit.draw(g, this);
}
if (iGotItemNum >= 10) {
bit = new Bit(jiki.chara_x-48,jiki.chara_y-36,bitimage);
bit.draw(g, this);
}
if (iGotItemNum >= 15) {
if (!barrierflag) {
barrierup = 10;
barrierflag = true;
}
barrier = new Barrier(jiki.chara_x+64,jiki.chara_y+6,barrierimage);
barrier.draw(g, this);
}
if (rensya>0) rensya = rensya-1;
jiki.draw(g,this);
Iterator it = jikitamas.iterator();
while(it.hasNext()==true){
JikiTama jt = (JikiTama)it.next();
jt.draw(g,this);
if(jt.isSotoNiDeta()==true) it.remove();
}
it = items.iterator();
while(it.hasNext()==true){
Item bh = (Item)it.next();
bh.draw(g,this);
if(bh.isSotoNiDeta()==true) it.remove();
}
it = bakuhatsus.iterator();
while(it.hasNext()==true){
Bakuhatsu bh = (Bakuhatsu)it.next();
bh.draw(g,this);
if(bh.isSotoNiDeta()==true) it.remove();
}
if (gamemainstate == GM_ZAKO) {
runGameMainZako(g);
}else {
runGameMainBoss(g);
}
g.setColor(Color.WHITE);
g.setFont(new Font("SansSerif",Font.PLAIN,30));
g.drawString("スコア"+iHappy,2,40);
g.drawString("ボスのハート"+iHeart, 2,80);
g.setColor(Color.RED);
g.fillRect(20, GAMEN_H - 5, iGotItemNum * 50, 15);
}
public void runGameMainBoss(Graphics g) {
if (boss == null) {
midiseq.stop();
midiYomikomi("bossbgm2.mid");
midiseq.setTickPosition(0);
midiseq.start();//2
if(stagenum == 1){
boss = new Boss(GAMEN_W - 150, GAMEN_H/2 - 100, biBoss3, "-1,-3,50,-1,3,50,1,-3,50,1,3,50,-10,10,50,0,-20,50,10,10,50");
}else if(stagenum == 2){
boss = new Boss(GAMEN_W - 150, GAMEN_H/2 - 100, biBoss4, "-1,-3,50,-1,3,50,1,-3,50,1,3,50,-5,5,50,0,-10,50,5,5,50,-3,3,50,0,-6,50,3,3,50");
}else if(stagenum == 3){
boss = new Boss(GAMEN_W - 150, GAMEN_H/2 - 100, biBoss5, "-1,-3,50,-1,3,50,1,-3,50,1,3,50,-15,0,50,15,0,50,0,-5,50,-15,0,50,15,0,50,0,10,50,-15,0,50,15,0,50,0,-5,50");
}else if(stagenum == 4){
boss = new Boss(GAMEN_W - 150, GAMEN_H/2 - 100, biBoss2, "-1,-3,50,-1,3,50,1,-3,50,1,3,50,-10,10,50,0,-20,50,10,10,50,-10,0,50,10,0,50,-10,0,50,10,0,50,-10,-10,50,0,20,50,0,-20,50,10,10,50");
}else if(stagenum == 5){
boss = new Boss(GAMEN_W - 150, GAMEN_H/2 - 100, biBoss6, "-1,-3,50,-1,3,50,1,-3,50,1,3,50,-15,2,50,15,-2,50,0,-5,50,-15,2,50,15,-2,50,0,10,50,-15,2,50,15,-2,50,0,-5,50");
}else{
boss = new Boss(GAMEN_W - 150, GAMEN_H/2 - 100, biBoss7, "-1,-3,50,-1,3,50,1,-3,50,1,3,50,-10,10,50,0,-20,50,10,10,50,-10,0,50,10,0,50,-10,0,50,10,0,50,-10,-10,50,0,20,50,0,-20,50,10,10,50,-1,-3,50,-1,3,50,1,-3,50,1,3,50,-15,0,50,15,0,50,0,-5,50,-15,0,50,15,0,50,0,10,50,-15,0,50,15,0,50,0,-5,50,-1,-3,50,-1,3,50,1,-3,50,1,3,50,-10,10,50,0,-20,50,10,10,50");
}
}
boss.draw(g,this);
if (Math.random()*tekitamarate<2){
tekitamas.add(new TekiTama(boss.chara_x-8, boss.chara_y+24,jiki.chara_x, jiki.chara_y, charaimage1));
}
Iterator it3 = tekitamas.iterator();
while(it3.hasNext()==true){
TekiTama tt = (TekiTama)it3.next();
if(tt.isAtari(jiki)){
iHappy += 1;
iHeart += 1;
seClip5.stop();
seClip5.setFramePosition(0);
seClip5.start();
}
}
it3 = tekitamas.iterator();
while(it3.hasNext()==true){
TekiTama tm = (TekiTama)it3.next();
tm.draw(g,this);
if(tm.isSotoNiDeta()==true) it3.remove();
}
Iterator it2 = jikitamas.iterator();
while(it2.hasNext()==true){
JikiTama jt = (JikiTama)it2.next();
if(boss.isAtari(jt)==true) {
bakuhatsus.add(new Bakuhatsu(jt.chara_x, jt.chara_y, charaimage1));
it2.remove();
iBossTairyoku--;
score = score+10;
if(score%1000 == 0)zanki++;
seClip1.stop();
seClip1.setFramePosition(0);
seClip1.start();
break;
}
}
if(boss.isAtari(jiki)){
if(barrierflag){
barrierup -=0;
if(barrierup <= 0){
barrierflag = false;
}
}
if(!barrierflag){
iGotItemNum -= 0;
if(iGotItemNum < 0){
}
}
}
if(iHeart > 30){
boss = null;
midiseq.stop();
midiYomikomi("bgm1.mid");
midiseq.setTickPosition(0);
gamemainstate = GM_ZAKO;
iHeart = 0;
goStageClear();
}
}
public void runGameMainZako(Graphics g) {
if(stagenum == 0 || stagenum == 1){
ArrayList al = tikeimap.getNewTeki(charaimage2);
if (al.size()>0) tekis.addAll(al);
}else if(stagenum == 2 || stagenum == 3){
ArrayList al = tikeimap.getNewTeki(charaimage1);
if (al.size()>0) tekis.addAll(al);
}
else{
ArrayList al = tikeimap.getNewTeki(charaimage3);
if (al.size()>0) tekis.addAll(al);
}
Iterator it = tekis.iterator();
while(it.hasNext()==true){
Teki tk = (Teki)it.next();
if (Math.random()*tekitamarate<0.0){
tekitamas.add(new TekiTama(tk.chara_x-8, tk.chara_y+24,
jiki.chara_x, jiki.chara_y, charaimage1));
seClip2.stop();
seClip2.setFramePosition(0);
seClip2.start();
}
}
Iterator it4 = kowares.iterator();
while(it4.hasNext()==true){
Koware ko = (Koware)it4.next();
}
tikeimap.draw(g,this);
it = tekis.iterator();
while(it.hasNext()==true){
Teki tk = (Teki)it.next();
tk.draw(g,this);
if(tk.isSotoNiDeta()==true) it.remove();
}
it = tekitamas.iterator();
while(it.hasNext()==true){
TekiTama tm = (TekiTama)it.next();
tm.draw(g,this);
if(tm.isSotoNiDeta()==true) it.remove();
}
it = tekis.iterator();
while(it.hasNext()==true){
Teki tk = (Teki)it.next();
Iterator it2 = jikitamas.iterator();
while(it2.hasNext()==true){
JikiTama jt = (JikiTama)it2.next();
if(tk.isAtari(jt)==true) {
bakuhatsus.add(new Bakuhatsu(tk.chara_x, tk.chara_y, charaimage2));
bakuhatsus.add(new Bakuhatsu(tk.chara_x, tk.chara_y, charaimage1));
if (Math.random()*10<6){
items.add(new Item(tk.chara_x, tk.chara_y, biItem));
}
it.remove();
it2.remove();
score = score+10;
if(score%1000 == 0)zanki++;
seClip1.stop();
seClip1.setFramePosition(0);
seClip1.start();
break;
}
}
}
it = items.iterator();
while(it.hasNext()==true){
Item tk = (Item)it.next();
if(tk.isAtari(jiki)){
it.remove();
iGotItemNum++;
if(iGotItemNum > 15)iGotItemNum = 15;
score = score+10;
if(score%1000 == 0)zanki++;
seClip4.stop();
seClip4.setFramePosition(0);
seClip4.start();
}
}
it = tekis.iterator();
while(it.hasNext()==true){
Teki tk = (Teki)it.next();
tk.isAtari(jiki);
if(tk.isAtari(jiki)){
it.remove();
iGotItemNum++;
if(iGotItemNum > 15)iGotItemNum = 15;
seClip5.stop();//
seClip5.setFramePosition(0);
seClip5.start();
iHappy += 1;
if(barrierflag){
barrierup -=0;
if(barrierup <= 0){
barrierflag = false;
}
}
if(!barrierflag){
iGotItemNum -= 0;
if(iGotItemNum < 0)
break;
}
}
}
it = tekitamas.iterator();
while(it.hasNext()==true){
TekiTama tt = (TekiTama)it.next();
if(tt.isAtari(jiki)){
if(barrierflag){//2019114hazusu
barrierup -=1;
if(barrierup <= 0){
barrierflag = false;
}
}
if(!barrierflag){
iGotItemNum -= 1;
if(iGotItemNum < 0)
break;
}
}
}
if(tikeimap.isMapEnd()==true) gamemainstate = GM_BOSS;
}
public void runGameOver(Graphics g) {
if(zanki<0){
stagenum = 1;
zanki = 6;
}
g.setColor(Color.RED);
g.setFont(new Font("SansSerif",Font.BOLD,80));
drawStringCenter("ゲームオーバー",220,g);
g.setFont(new Font("SansSerif",Font.PLAIN,24));
drawStringCenter("④ のボタンをおしてください,300,g);
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package yokoshoot218.jp.ohtsuki.minigame;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Insets;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferStrategy;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
import javax.sound.midi.InvalidMidiDataException;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.MidiUnavailableException;
import javax.sound.midi.Sequence;
import javax.sound.midi.Sequencer;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.swing.JApplet;
import javax.swing.JFrame;
public abstract class GameHoneGumiApplet extends JApplet implements Runnable {
public static final int GS_STARTGAMEN = 0;
public static final int GS_STAGESTART = 1;
public static final int GS_STAGECLEAR = 2;
public static final int GS_GAMEOVER = 3;
public static final int GS_GAMEMAIN = 4;
public static final int GM_ZAKO = 0;
public static final int GM_BOSS = 1;
private int gamestate;
protected int gamemainstate;
//public JFrame frame1;
//public BufferStrategy bstrategy;
public Sequencer midiseq = null;
public Sequencer midiseq2 = null;
private int waittimer;
public void init(int w,int h, String title){
//frame1 = new JFrame(title);
//frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBackground(Color.WHITE);
//setResizable(false);
setVisible(true);
Insets insets = getInsets();
setSize(w + insets.left + insets.right,
h + insets.top + insets.bottom);
//frame1.setLocationRelativeTo(null);
//frame1.createBufferStrategy(2);
//bstrategy = frame1.getBufferStrategy();
//frame1.setIgnoreRepaint(true);
requestFocusInWindow();
addKeyListener(new GameHoneGumiApplet.MyKeyAdapter());
Thread myThread = new Thread(this);
myThread.start();
}
public void goStartGamen(){
gamestate = GS_STARTGAMEN;
gamemainstate = GM_ZAKO;
//Timer t = new Timer();
//t.schedule(new GameHoneGumiApplet.MyTimerTask(), 10, 30);
}
public void goStageStart(){
initStageStart();
waittimer = 100;
gamestate = GS_STAGESTART;
}
public void goStageClear(){
initStageClear();
waittimer = 100;
gamestate = GS_STAGECLEAR;
}
public void goGameMain(){
gamestate = GS_GAMEMAIN;
}
public void goGameOver(){
initGameOver();
gamestate = GS_GAMEOVER;
}
public abstract void initStageStart();
public abstract void initStageClear();
public abstract void initGameOver();
public abstract void keyPressedGameMain(int keycode);
public abstract void keyReleasedGameMain(int keycode);
public void drawStringCenter(String str, int y, Graphics g) {
int fw = getWidth() / 2;
FontMetrics fm = g.getFontMetrics();
int strw = fm.stringWidth(str) /2 ;
g.drawString(str,fw-strw,y);
}
public Clip otoYomikomi(String fname) {
Clip clip = null;
try {
AudioInputStream aistream = AudioSystem.
getAudioInputStream(getClass().getResource(fname));
DataLine.Info info = new DataLine.Info(Clip.class, aistream.getFormat());
clip = (Clip)AudioSystem.getLine(info);
clip.open(aistream);
} catch (UnsupportedAudioFileException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (LineUnavailableException e) {
e.printStackTrace();
}
return clip;
}
public void midiYomikomi(String fname) {
if (midiseq == null){
try {
midiseq = MidiSystem.getSequencer();
midiseq.open();
} catch (MidiUnavailableException e1) {
e1.printStackTrace();
}
}
try {
Sequence seq = MidiSystem.getSequence(getClass().getResource(fname));
midiseq.setSequence(seq);
} catch (InvalidMidiDataException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public abstract void runStartGamen(Graphics g);
public abstract void runStageStart(Graphics g);
public abstract void runStageClear(Graphics g);
public abstract void runGameMain(Graphics g);
public abstract void runGameOver(Graphics g);
private class MyKeyAdapter extends KeyAdapter{
public void keyPressed(KeyEvent ev) {
if (gamestate == GS_GAMEMAIN){
keyPressedGameMain(ev.getKeyCode());
}
}
public void keyReleased(KeyEvent ev) {
int keycode = ev.getKeyCode();
switch(gamestate){
case GS_GAMEMAIN:
keyReleasedGameMain(keycode);
break;
case GS_STARTGAMEN:
if (keycode == KeyEvent.VK_P) goStageStart();
break;
case GS_GAMEOVER:
if (keycode == KeyEvent.VK_R) goStartGamen(); }
}
}
public void run() {
try {
while(true){
repaint();
Thread.sleep(30);
}
}catch(Exception e){}
}
public void paint(Graphics g) {
Dimension size = getSize();
Image back = createImage(size.width, size.height);
Graphics buffer = back.getGraphics();
Insets insets = getInsets();
buffer.translate(insets.left, insets.top);
switch(gamestate){
case GS_STARTGAMEN:
runStartGamen(buffer);
break;
case GS_STAGESTART:
runStageStart(buffer);
waittimer = waittimer-1;
if (waittimer < 0) goGameMain();
break;
case GS_STAGECLEAR:
runStageClear(buffer);
waittimer = waittimer-1;
if (waittimer < 0) goStageStart();
break;
case GS_GAMEMAIN:
runGameMain(buffer);
break;
case GS_GAMEOVER:
runGameOver(buffer);
break;
}
g.drawImage(back, 0, 0, null);
g.dispose();
}
}