Report#8
[課題]
Report#8:Java Appletプログラミング{〜2/9(Mon)}
*Java Applet/AWTについて学び、Java Appletのオリジナルプログラムを作成し解説せよ。
[プログラム]
五目並べのアプレット実行
プログラムソース
[考察]
[gomoku.javaの概要]
import java.awt.*;
import java.util.Random;
public class gomoku extends java. Applet implements Runnable{
/*アプレットに使われるボタンやメッセージ、int型の石の配置情報*/
}
public void start(){
/*ボタン(ラベル)やメッセージなどの内容と配置(ゲームが始まる状態)*/
}
public void stop(){
/*終了した時、runner=nullにして終了メッセージを表示*/
}
public void banmenClear(){
/*盤面のイメージをクリアー*/
}
public ishi_haiti(int x,int y){
/*石を配置するときの動作*/
}
public boolean mouseMove(Event evt,int x,int y){
/*画面上のマウスカーソルの情報*/
}
public boolean mouseDown(Event evt,int x,int y){
/*マウスを押した時の石の動作[hantei()を使う]*/
}
public void run(){
/*スレッド本体。終了するかはここで決定する。[hantei()を使う]*/
}
public boolean action(Event evt,Object what){
if(evt.target==bt{
/*Startボタンのアクション*/
}
if(evt.target==bt2){
/*Stopボタンのアクション*/
}
if(evt.tartget==lan){
/*文字を表示するアクション*/
}
}
public void sikou(int isi){
/*コンピュータの思考プログラム*/
}
public boolean cpuTurn(){
/*コンピュータの次の一手を決定*/
}
public void hantei(int v){
/*石が5つ並んでいるか判定*/
}
public void game_end(){
/*ゲーム終了の動作*/
}
public void print(Graphics g){
/*盤面上のカーソル枠のイメージ*/
}
public void update(Graphics g)
/*paint(g);*/
}
|
思考アルゴリズム
このプログラムでは、コンピュータの手を決めるためにまず盤面を評価して、「点数」をつけています。
例えば、自分の石が4つ並んでいてその隣が空いているのなら、最優先でそこに打ちなので、その目の「点数」
を一番高くします。
また、連続する4つの中に自分の石が3つありその両隣が空いているなら、 次にその空いている所に打てば
「必死」になるので、そこにもやはり高い点数を与えます。 ただし、その点数は次の手で勝てる4連よりは低く
する必要があります。
それを判定する基準が
int kati=15000,hissi=1000,sanren=500,mittu=100,futatu=10;
int kati2=12000,hissi2=500,sanren2=200,mittu2=80,futatu2=10;
になります。
コンピュータは、このようにしてそれぞれの目に対して点数をつけていき、 その点数が最も高い目に打ってきます。
このプログラムは、一手先しか読めず、一切「先」を読まないのであまり賢いとはいえません。
・盤面情報の変数
石の配置情報 int koma[16][16]・・・・・その目にある石。0でなし、1で黒ー1で白
得点 int score[16][16]・・・・その目の得点
[感想&反省]
今回のレポートはとても楽しかったです。
本当は囲碁のアプレットを作ってみたかったのですが、
思考アルゴリズムが難しすぎるので五目並べにしました。
一応コピペになるんですが、たぶん今までで一番考察したと思います。
というかコピペといっても資料が多すぎて大変でした。。。
将来こんなソフトが作れるくらいに勉強したくなるような、
充実した課題だったので、とてもよかったです。
[参考文献]
スーパーマリオもあります
あゆしゃの世界
創作プログラミングの街