ニュー即ブログν

ニュー即ブログν

シェアする

プログラミングしようと思うんだが…

シェアする

1: 以下、ニュー即ブログνがお送りします 2016/06/12(日)23:43:55 ID:HMW
javaでオセロを作りたいと思う
環境はeclipse

初心者だからできれば協力してほしい

引用元: プログラミングしようと思うんだが

http://hayabusa.open2ch.net/test/read.cgi/news4vip/1465742635/

2: 以下、ニュー即ブログνがお送りします 2016/06/12(日)23:44:46 ID:HMW
とりあえずクラスを作る

no title

3: 以下、ニュー即ブログνがお送りします 2016/06/12(日)23:45:52 ID:nJu
NC機械のプログラムしか組めんわ

4: 以下、ニュー即ブログνがお送りします 2016/06/12(日)23:47:04 ID:BFr
public void main () {
println(“Hello Work!!”);
}

5: 以下、ニュー即ブログνがお送りします 2016/06/12(日)23:49:21 ID:aM9
エクリプスってぶっちゃけゴミじゃない?
泥アプリ作るときクッソイラついたんだけど

7: 以下、ニュー即ブログνがお送りします 2016/06/12(日)23:52:26 ID:HMW
>>5
初心者にはどこがゴミなのかも分からん

6: 以下、ニュー即ブログνがお送りします 2016/06/12(日)23:51:41 ID:HMW
とりあえずウィンドウ表示できた

no title

8: 以下、ニュー即ブログνがお送りします 2016/06/12(日)23:52:27 ID:zbk
つづりが違うのは商標対策か

9: 以下、ニュー即ブログνがお送りします 2016/06/12(日)23:55:48 ID:HMW
なんとかサイズを持たせることに成功

no title

>>8
深く考えてなかった

10: 以下、ニュー即ブログνがお送りします 2016/06/12(日)23:55:53 ID:tw@ARIMAAGp5I
メインループまで勉強したか?

11: 以下、ニュー即ブログνがお送りします 2016/06/12(日)23:56:39 ID:HMW
>>10
なんだそれは

12: 以下、ニュー即ブログνがお送りします 2016/06/12(日)23:57:37 ID:tw@ARIMAAGp5I
>>11
(・_・)

13: 以下、ニュー即ブログνがお送りします 2016/06/12(日)23:57:53 ID:tw@ARIMAAGp5I
ググったらでてくるはず

14: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:01:09 ID:EES
背景を緑色に出来た
なんかそれっぽい

no title

>>13
調べてみる

15: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:02:45 ID:Zbh
頑張れ!

16: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:03:58 ID:EES
>>13
イベントループのことだったか
クリックしたら石がおけたりひっくり返ったりと考えてる

>>15
ありがとう!
頑張るぞ!!

17: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:12:18 ID:EES
やっと丸を出せた・・・
一苦労だぜ

no title

18: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:14:04 ID:EES
オセロ盤はどうやら8×8マスらしいので手直し

19: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:18:24 ID:EES
マスを追加してそれっぽい感じ

no title

20: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:25:21 ID:EES
オセロは確かこんな感じだった気がする

no title

21: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:26:48 ID:EES
こっかマウスでのイベントを処理したいんだがmouseAdapterとか
言うのを使うらしい

調べて実装してみる

22: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:33:02 ID:EES
ウィンドウの右上をクリックしたはずなのに
左下に石が置かれてしまう

困った
no title

23: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:35:03 ID:EES
盤上は[y][x]の形で管理したかったけど
[x][y]に変更することにする

24: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:37:53 ID:s5S
俺もプログラミング勉強したくなってきた

25: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:40:42 ID:EES
クリックするごとに黒と白が変わるようにしてみた
これで見える部分は完成だろうか

no title

>>24
楽しいよ
文字の入出力だけじゃなくてこういうグラフィカルな
変化として見れるとさらに楽しくなってくる

26: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:44:08 ID:EES
白と黒はturn変数で管理してる
1が黒で2が白

クリックされた場所にturn変数に格納されている1か2をfield変数に入れる

27: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:44:28 ID:XUB
対人戦実装までだよね
CPU戦実装とかやらないよね

28: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:46:04 ID:EES
>>27
おける場所におく、くらいだったら出来るかもしれないけど
今回は一人で交互にできるまで

29: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:52:10 ID:EES
機能に変化はないけど、新しくクラスを作って
そこでオセロの中心処理を任せることにする

ここではCoreクラスを作成した

no title

30: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:55:46 ID:EES
coreの中身
クリックしたところに他の石が置かれてなければ石を置くようにしてる
このままでは、クリックしたとき石が置けなくても黒と白が入れ替わってしまうので
そこを修正

no title

31: 以下、ニュー即ブログνがお送りします 2016/06/13(月)00:59:07 ID:EES
クリックイベント内で呼び出されるsetStoneメソッドがtrueを
返してきたらターンを入れかえるように変更

if(core.setStone(y, x, turn)) turn = 3 – turn;

core.setStoneはtrueかfalseを返す

32: 以下、ニュー即ブログνがお送りします 2016/06/13(月)01:02:04 ID:EES
引数がy,xの順で渡されてて、setStoneではx,yで受け取ってるのが
気持ち悪いけど、どうしてもfield[y][x]で考えたいので仕方ないとする

33: 以下、ニュー即ブログνがお送りします 2016/06/13(月)01:07:36 ID:EES
どういうときに石が置けるかをチェックしたいんだが、これがなかなか
難しいことに気がついた

8方向調べるらしいが・・・
なんだか時間とられそうだ

34: 以下、ニュー即ブログνがお送りします 2016/06/13(月)01:15:41 ID:EES
2次関数の傾き的な考え方でやってみることにする
fieldは二次元配列なので、ある要素を中心とした周りの要素は
添え字を+1か-1した要素番号になるはず

35: 以下、ニュー即ブログνがお送りします 2016/06/13(月)01:22:01 ID:EES
石が置けるかどうかを判定するcheckStoneメソッドを実装中
なんとかできそう

36: 以下、ニュー即ブログνがお送りします 2016/06/13(月)01:29:48 ID:EES
2重ループでx軸とy軸の傾きを考えた
その傾きの方向に相手の石が続いていれば、さらにその先の石を調べる
相手の石の後に自分の石があれば石を置けるのでtrueを返す
このメソッドをsetStoneメソッド内で使う

no title

37: 以下、ニュー即ブログνがお送りします 2016/06/13(月)01:33:01 ID:EES
次は石をひっくり返す処理を実装する
機能的にcheckStoneと似てるので簡単にできそう

38: 以下、ニュー即ブログνがお送りします 2016/06/13(月)01:38:33 ID:vRg
正直最初は物理の問題とかをプログラミングした方がいいと思うよ
変数の型の感覚とか掴みにくいと思う