
GIT-HUBでドラクエのソースコードを見つけた。
Javaで書かれたもので、とても参考になる。
と、思いきや、
敵は出てこないわ、
レベルアップはしないわで、
ドラクエの最初のところだけといった感じ。
以下ソース
package dqc;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.DisplayMode;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.JFrame;
//インポート文がたくさん書かれていますけど、おそらく、これ以上は何もインポートするものは無いと思われる。
/*
* DQCメインフレーム
*/
public class DQC extends JFrame implements KeyListener, Runnable {
public static final int WIDTH = 640;
public static final int HEIGHT = 480;
//フルスクリーンでプレイすることもできますが、個人的にはアプレットが好みなので、アプレットに移植しようと思います。
// 方向定数
public static final int DOWN = 0;
public static final int UP = 1;
public static final int LEFT = 2;
public static final int RIGHT = 3;
// フルスクリーンモードにするならtrue、ウィンドウモードならfalse
private boolean isFullScreenMode = true;
// 1フレームの持ち時間(ms)
private static final int PERIOD = 10;
// キャラクター
private Hero hero; // 主人公
// マップ
public static MapManager mapManager = new MapManager();
//マップマネージャーのオブジェクトをニューする。
// アクションキー
private ActionKey downKey = new ActionKey();
private ActionKey upKey = new ActionKey();
private ActionKey leftKey = new ActionKey();
private ActionKey rightKey = new ActionKey();
private ActionKey anyKey = new ActionKey(ActionKey.DETECT_INITIAL_PRESS_ONLY); // どのキーでもよい
private ActionKey spaceKey = new ActionKey(ActionKey.DETECT_INITIAL_PRESS_ONLY); // 便利キー
private ActionKey talkKey = new ActionKey(ActionKey.DETECT_INITIAL_PRESS_ONLY); // 話す
private ActionKey searchKey = new ActionKey(ActionKey.DETECT_INITIAL_PRESS_ONLY); // 調べる
private ActionKey openKey = new ActionKey(ActionKey.DETECT_INITIAL_PRESS_ONLY); // 開ける
//アクションキーオブジェクトをニュー。
// ゲームループ
private Thread gameLoop;
private volatile boolean running = false;
//volatileはスレッドを同期するための変数です。
// フルスクリーン用
private GraphicsDevice device;
// ダブルバッファリング用
private BufferStrategy bufferStrategy;
// 乱数生成器
private Random rand;
// メッセージウィンドウ
private MessageWindow msgWnd;
// サウンドマネジャー
public static SoundManager soundManager = new SoundManager();
private Font font = new Font("HG創英角ゴシックUB", Font.PLAIN, 16);
public DQC() {
setTitle("DQC");
setBounds(0, 0, WIDTH, HEIGHT);
setResizable(false);
setIgnoreRepaint(true); // paintイベントを無効化
// フルスクリーンモードの初期化
if (isFullScreenMode) {
initFullScreen(); // setVisible()の前でないとダメ!
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
//アプレットにする場合、ここらへんをいじる必要あり。
// BufferStrategyを使用
// setVisible()の後でないとダメ!
createBufferStrategy(2);
bufferStrategy = getBufferStrategy();
addKeyListener(this);
rand = new Random(System.currentTimeMillis());
Map curMap = mapManager.getMap("king_room");
mapManager.setCurMap(curMap);
soundManager.playBGM(curMap.getBGM());
hero = new Hero(8, 6, 0, Chara.DOWN, Chara.STOP, "", curMap);
curMap.addEvent(hero);
msgWnd = new MessageWindow(new Rectangle(80, 352, 480, 108));
// ゲームループ開始
gameLoop = new Thread(this);
gameLoop.start();
}
いろいろな設定があって、ようやくゲームループが始まります。
敵の登場とか、銭湯シーンとか、レベルアップの設定とかは、JavaScriptで書かれたソースがあるので、そちらを参考にしていきます。
すさまじく音痴な人がエヴァを歌っている。
昨日は一人でカラオケに行きました。
体調不良と、しばらく歌ってないのが重なって、音程がちょっと下がってしまいました。
自分も、歌が上手い部類じゃない。
でも、上手くなりたいじゃない。
同僚で凄まじく歌が上手い人がいて。
その人と一緒にカラオケに行くと、その人は、
「上手いね~~」
といわれるのに対して、私は、
「熱いね~」
だけで、それ以上の褒め言葉は無いわけ。
上手いって、本当に言われたい。うう。。。
この歌を持ち歌にするために頑張って練習しました。
このハスキーな声、
男が歌うとハードロックな感じになるので、個人的には好きですね。↑↑
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
英語の講師をまた募集した。
英語を流暢になりたい。
でも、
まだまだなれない自分。
NOVAではレベル8。
最高レベル9になりたいけど、
なれない自分。
ネイティブと同等に口論やディベートをしたい!
でも、できない自分。
・・・・・・・・
昨日、NOVAに新人の生徒さんが来た。
レベル6か7って、言われてた。
でも、なんか、レベル8に入りたいみたいなことを言ってったっぽい。
うう、レベル8舐められたな・・・・。
その新人さん、リスニングが全然だめなくせにレベル8に入りたがってる。
甘いぜ、NOVAを舐めるなよ。
・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・
昨日の韓国語は酷かった。
相変わらず、自分の韓国語は進歩しない。
ま、やらなきゃ進歩しない、ってそれだけなんだろうね。
・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・
今日は6~7kmは走ろうと思います。
10kmの大会が近づいているから。