Javaで簡単なRPGを作る

Last-modified: 2018-10-26 (金) 20:54:26

2018/10/25 17:24

とりあえず参考になるコードをYoutubeで探すことにする。
なぜYoutubeなのかというと、ググって出てくるの大体古臭くて今から勉強してもなぁ...みたいな奴ばかりだから。
Youtubeは比較的マシ(な気がする)


2018/10/25 18:29

トイレやら犬の散歩やら電球の交換やらやってたらほとんど何も進んでいない。
軽く動画を見回ったけどやっぱりライブラリ使わないとめんどくさそうだ。
しょうがないので日本語の古臭いサイトのチュートリアルをやってみようと思う。


2018/10/25 18:34

冷静に考えたら俺が作りたいのはRPGというよりもゼルダみたいなアクションRPGなので、
RPGのチュートリアルよりもシューティングのチュートリアルを見たほうが適切な気がしてきた。
シューティングに切り替えていく。


2018/10/25 18:36

ググったらいい感じのシューティングチュートリアルサイトがあった。
静岡理工科大学のサイトらしい
https://www.sist.ac.jp/~suganuma/game/Java/shoot/index.htm
早速これをやっていこうと思ったが、それよりも前に同サイトの「ゲーム枠の作成」をやるべきらしい。
https://www.sist.ac.jp/~suganuma/game/Java/frame/index.htm
なのでこっちを先に読んでいこうと思う。作業のための作業でハクスラみたいになってきた。


2018/10/25 18:43

なんかJavaアプレットで動かすこと前提になってるっぽくて、Chromeだとアプレット動かないんやけど...そもそもブラウザゲームじゃなくて
OS上で動くゲーム作りたいんやけど...ってなってる。
JavaアプレットのコードでもOS上で動かせるのならこのままでも良いが...
調べてみよう。


2018/10/25 18:49

調べた感じJavaアプレットはマジモンのオワコンな上にAPIが共通しているわけでも無いので移植もクソめんどくさそうだということがわかった。
Java熟練者ならスパッと移植できそうだけど、初心者には無理くさいので諦めて別のチュートリアルを漁る。
案の定古臭いサイトにあたってしまったというわけだけど、ゲーム枠の考え方は外でも通用しそうなので、一応記憶にとどめておく。


2018/10/25 18:59

Javaでゲームを作ろうとして検索するとみんなアプレット出してくるのマジでなんなの
これだから古臭い言語は嫌いなんだ...ってなりかけている。
そもそもJavaでゲームを作るべきじゃない気がしてきたが、まぁ勉強のためなので...


2018/10/25 20:34

ごはん食べてたらもうこんな時間だ...
1行もコード書いてないけどなんかもうすでに今日はこんぐらいで良いかな...って気分になっているのがヤバイ。
最低限ウィンドウを表示させるくらいまでは行きたい。
ということでまともなチュートリアルサイトみたいのを見つけてきた。
Javaでゲーム作りますが何か?
このサイトPygameのときも見たな...
ちょっと古いけど実績があるのでこのサイトでやっていこうと思う。


2018/10/25 20:38

と思ったけどSanyちゃんから電話が来たので一旦休止
進まねえな


2018/10/26 2:50

せめて寝る前に(眠気はないけど)画面出すぐらいはやっておきたい。
一番最初のフレームとパネルのコードを読み解いていく。


2018/10/26 3:08

HelloWorldでた.png

とりあえず画面を出せた。内容はまだ良くわからない。
しかしWindowsでJavaををコンパイルする時に日本語がバグるので

javac -encoding utf-8 Hoge.java

としないといけないのはほんまクソやなーと思いました。


2018/10/26 3:19

オマケ

しょうもなMAX.png

ほんましょーもないわー
コードの読解は寝て起きてからします。
と言ってもまぁ大体はわかるっちゃわかるけど細かいところを詰めていく感じで。


2018/10/26 17:05

今日も一日がんばるぞい
やっていきます。
wikiについてあれこれ調べてソースコードをキレイに表示する方法とか試してみたけどなんかうまくいかない。なぜ。
あと文字がちょっと小さいから全体的にもっと大きいサイズにしたい。
まぁあくまでここは制作メモみたいなもんだから、ある程度形になったら改めてキレイにまとめ直そうと思う。
今日中にキャラを動かすぐらいまではいきたいナ。


2018/10/26 17:14

文字表示できた.png

メインパネルに文字表示出来た。
本来はString変数を入れるものっぽいけどまぁ多少はね?
このままスルッとイケそう。


2018/10/26 17:20

String変数で文字表示.png

変数指定でも行けたけどここに変数宣言するの間違っているのでは。


2018/10/26 17:26

プライベートでやっていけ.png

「変数などの初期化」のところに宣言してみたけどなんかだめだった。
というかそこに宣言するにしてもpublicじゃなくてprivateで宣言すりゃええやんと思って、した。
特に問題も無くイケた。


2018/10/26 17:49

ダブルクリックで起動できるようになった.gif

.jarに出力してダブルクリックで起動できるようになった。
ソフトウェアらしくなって良い。
最初.jarに出力しても起動出来なくて困ってたんだけど、MANIFEST.MFファイルの最後の行で改行する必要があるとチュートリアルサイトのコメント欄に書いてあり、
改行したら無事起動出来た。どういう仕様なんだこれ。


2018/10/26 18:53

犬の散歩から帰ってきたので再開。
チュートリアルサイト見てるけどなんか配布されているソースコード読まないとつらいっぽい。


2018/10/26 19:04

今の所わからないところ
Thread
fillOval
InterruptedException
printStackTrace()


2018/10/26 19:09

ごはんなので休憩。


2018/10/26 19:55

再開。玉動かすところまで行きたい。


2018/10/26 19:57

たくさんエラー吐いた.png

ソースコード見ながら自分のコードに移植したけどなんかいろいろエラー吐いた...
解説見ながらなんとかしていく。


2018/10/26 20:03

俺は馬鹿.png

俺は馬鹿か
速攻で直した。


2018/10/26 20:07

エラー減らした.png

変数直してimportでjava.awtとjavax.swing全部取り込むようにしたらエラーが一つになった
そもそもスレッドとはなんなのか。解説を見るべき。


2018/10/26 20:13

今の所わからないところ
Runnable

Thread()は処理の流れのことらしい。
thread.start();でrun()を実行出来るとのこと。
run()は直接呼び出せない。


2018/10/26 20:22

たぶんコレが問題.png

Threadを実行するにはRunnableインターフェイスを実装したサブクラスを用意する必要があり、
implents Runnableしてなかったのが原因みたいですね。


2018/10/26 20:28

ボールが動いた.gif

無事ボールが動いた!
なんか文字まで青くなってるけどなんでやろ。
文字の色元に戻したいな。


2018/10/26 20:37

文字の色だけ黒く出来た.png

無事文字の色を戻せた。
けどあまり美しくないな。
文字とボールでクラスを分けたい。


2018/10/26 20:49

調べたけど今の知識ではなんか無理っぽい。
そもpaintComponent複数呼び出すとか出来ないみたいだしな
とりあえず今日はこんぐらいにしようかな...


2018/10/26 20:53

というか未だにオーバーライドとかスーパークラスとかそこらへんイマイチあやふやでやってるので
ちゃんとやっていきたい。
なので明日は入門書を軽く読み直してからコードを書いていきたい。