オセロできました
毎日せこせことコード組み立ててとりあえず順番に白黒のコマを置いていってすべてのマスが埋まったら勝利判定まではできました
その後、コマを置く場所がないターンにはパスをするようにとマスが埋まる前に勝負が終わった場合の処理を作って完成
言葉で書くと簡単ですが、実際は動作が全然うまくいかなくて苦労しました
プログラミングは動きとか考えながらコード打ってるときはまあまあ楽しいんですが、うまく動かないで修整するとなると途端に面倒くさくなります
特に問題がどこにあるか検討がつかないと途方にくれてしまいます
大抵はどこかの変数の処理とか繰り返しや反復の条件式が間違ってたりするんですけど、それを発見するのが大変なんですよねえ
eclipseみたいなIDEではデバッグ時に内部の変数の動きが見ることができると少し前に知って感動していたんですが、Swingで作ったguiのアプリを操作してもその変数は全然見表示されなかったので結局アプリ上にテキストで変数情報などを表示させて確認しながら動かすはめになりました
あと、eclipseでコード打っててショートカット使おうとしてミスると謎の機能がはたらいて変な風になってしまったりしてかえって面倒なことになったりします
知らずに打ってしまったから直し方もわからないので・・・
例えばコードが表示されてる画面が2重になってたりしました
とりあえず次はテトリスつくるかな・・・
でもテトリスは時間での処理があるしだいぶ難しそうだな~
オセロのソースコード
ちなみにオセロのソースあげときます↓
あと前回の〇×ゲームのソースコードも
〇×ゲームは別のところでコンソール出力のやつを
以前見たのを参考にしたので完全にオリジナルってわけではないです
オセロは一応自分で作ったんだけどね
Javaの不具合かと思った
〇×ゲームのクリア判定なんですが
上のやつでは全部if文の条件の中にはめて判定してるんですが
for文でもできるんじゃないかとやってみたんですよ
横、縦とあと斜めの分それぞれ判定してね
しかし実際に試すとなんかうまくいかないんですよ
いくつかの勝利結果が引き分け表示になってしまいましてね
結構うんうん悩んでいたんですが全然分からなくて
色々試したらいくらか改善したのですがラストに揃った場合も
引き分けになるのだけは改善しませんでした
もうJavaのバグかと諦めていたんですが
ふと天啓が閃いたので手を加えたら無事動きました
いや、本当に思いつかな過ぎてJavaの不具合かと思いました
多分ちゃんとできてるはず・・・
コメント
アップロードされたオセロ、○×ゲームを
Eclipseに読み込ませ、遊ぶことができました。
オセロのソースコードについてですが、
ボタン押下時のアクション部分やメソッドCanPressにある
石のチェック部
(←if(space[i±1][j±1].getIcon()==empty ||space[i±1][j±1].getIcon()==black)→)
あたりを熟考する必要があったと思います。
ここの論理はどうやって思いつきましたか?
(紙にオセロ盤の行列を描きながら…ですかね?)
あんまり深く考えてないですね
開発にも慣れてないしとりあえず動くもの作ること目標にして
思いついたもの試してみただけです
もしやんさんは結構考えてやってるんですね
プログラミング歴結構あるんですか?
私は、先に仕様をよく考えてからプログラミングしています。
オセロの論理部分も紙に行列[i,j]を書いて色々と悩みました。
ちたんさんの場合、思いつきでできた、との事ですが、数学的センスがあるのかもしれないですね。
プログラミング歴ですが、あまりないですね笑。
飽きたり、ソースコードのバグを直せないでモチベーションが無くなったら、放置してしまうので…。
なるほどね
俺も〇×ゲーム詰まってしばらく放置してたので似たようなもんですね
仕様から考えるんですね~
まあ本当はその方がいいんでしょうね
複雑なもの作るならそういうのも練習していけないですね