Version0.2.0
変更点
- 非常に多岐にわたる
- プログラムの改善
- 画面上にものを配置
- ものに対する反応
- 端まで行くと背景ではなくキャラクターがスライドするようになる
- 攻撃の画像表示(当り判定は未実装)
import java.awt.*;
import java.applet.*;
import java.util.*;
import java.awt.event.*;
public class mini_pro extends Applet implements KeyListener{
Font font = new Font("serif", Font.BOLD, 24);
Image background, textbox, at;
Image hero[ ]=new Image[4];
Image object[ ]=new Image[4];
//背景を動かす変数
int back;
int objectback;
//キャラクターの位置を示す変数
int position;
//文章のための変数
String string="";
boolean shown=false;
boolean wait=false;
boolean attackshown=false;
int heropose=0;
int heroposition=0;
public void init() {
background = getImage(getCodeBase(),"background.png");
for (int i=0; i<hero.length; i++){
hero[i] = getImage(getCodeBase(), "chara"+i+".png");
}
for (int i=0; i<hero.length; i++){
object[i] = getImage(getCodeBase(), "object"+i+".png");
}
textbox = getImage(getCodeBase(), "textbox.png");
at= getImage(getCodeBase(), "attack.png");
addKeyListener(this);
}
public void paint (Graphics g) {
g.setColor(Color.white);
g.setFont(font);
setSize(640, 480);
g.drawImage(background, 0-back,0, this);
g.drawImage(background, 640-back, 0, this);
g.drawImage(background, -640-back, 0, this);
g.drawImage(object[0], 640-objectback, 320, this);
g.drawImage(object[1], 800-objectback, 0, this);
g.drawImage(hero[heropose], 32+heroposition, 320, this);
if ( shown == true) {
g.drawImage(textbox, 0,0, this);
g.drawString(" "+string,40,40);
}
g.drawImage(at, 32+128+heroposition, 320, this);
}
//入力チェック
public void keyPressed(KeyEvent ke){
int keycode = ke.getKeyCode();
if (wait == false) {
if (keycode == KeyEvent.VK_ENTER) {
if(attackshown ==false){
attackshown = true;
//あたり判定の編集(未実装)
}
repaint();
}
if (keycode == KeyEvent.VK_RIGHT) {
//背景を動かす
if(position <=26){
if(position >=-5 && position <= 18){
back +=32;
objectback+=32;
}else{
heroposition+=32;
}
position +=1;
}
if (back>=640) {
back=0;
}
//キャラクターのポーズを変える
if (heropose == 0 || heropose==2){
heropose=1;
}else{
heropose=0;
}
repaint();
}
if (keycode == KeyEvent.VK_LEFT) {
//背景を動かす
if(position >=-7){
if(position >=-5 && position <=18){
back -=32;
objectback-=32;
}else{
heroposition-=32;
}
position -=1;
}
if (back<=-640) {
back=0;
}
//キャラクターのポーズを変える
if (heropose == 0 || heropose==2){
heropose=3;
}else{
heropose=2;
}
repaint();
}
if (keycode == KeyEvent.VK_DOWN) {
if (position>= 18 && position<=22 && shown==false) {
string = "Here is the cave, which is dangerous.";
shown=true;
wait = true;
}
if(position = 26){
//ここで別に作った洞窟の中を表示する(未実装、前回の質問部分)
}
}
}else if(wait == true){
if (keycode == KeyEvent.VK_ENTER) {
if (shown==true ) {
string="";
shown=false;
wait = false;
}
}
}
repaint();
}
public void keyTyped(KeyEvent ke){
}
public void keyReleased(KeyEvent ke){
if(attackshown == true){
attackshown = false;
}
}
}
- 今後の課題
- 次のシーン、またタイトルを作成する
- 辺り判定と敵キャラの用意
最終更新:2007年01月17日 16:07