忍者ブログ
無料レポート
PR
アフィリエイトの「教材」の広告です。 広告のページには、どんな事をすれば成功するか、肝心なことはもちろん書いてないですが、ヒントとなることはたくさん書いてあります。 とりあえず読むだけでも価値があります。
THE ULTIMATE ONLINE SALES LETTER
■ブログアフィリエイト最終奥義■超爆裂!大逆転アフィリエイト【□ブログアフィリエイト最終奥義□ 超爆裂!大逆転アフィリエイト】
“たったの24時間であなたの今後のネット収益を倍増する”宮川明のインターネット・コピーライティング講座【宮川明.com】
「本当に稼げる」 オンラインマネーゲーム 「店長の椅子」 あなたのお店を簡単に構築・公開できます。【株式会社バイクCITY】
アフィリエイトページ自動作成!アフィリエイトビルダーライセンス無制限版!【アクロサーブ】
情報起業家育成マニュアルセット(DVD)【成功法則.com】
ちなみに私は、これらの「教材」を読んだことはないです。 だからまだ収入0なのか...(><)2006.12.14現在
カレンダー
01 2026/02 03
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
プロフィール
HN:
アフィリエイト奮闘記管理人
性別:
非公開
バーコード
最新CM
[11/18 SLT-A65]
[09/11 八゜イ星人]
[09/04 むらた]
[04/26 なかたけひでなが]
最新TB
ブログ内検索
カウンター
[35] [34] [33] [32] [31] [30] [29] [28] [27] [26] [25]

本当に欲しいかどうかよくわからない物。でも、送料も無料の完全無料で手に入るとしたら、あなたはどうしますか?

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


本当に欲しいかどうかよくわからない物。でも、送料も無料の完全無料で手に入るとしたら、あなたはどうしますか?

私は昔、ゲームを作るのが大好きでした。でも、公開できないようなものばかり...。

でも、ひとつだけ公開できるものがあります。

ReversiProject

リバーシ(いわゆるオセロ)です。超初心者はかなわない程度の、人工知能がお相手します。DirectDrawを駆使(?)して、大迫力(?)のゲーム展開です!!もちろん無料フリーソフトです。

ダウンロードはこちらですよ。ちなみに本家はここです。

ちなみにこのゲーム、自分でアルゴリズムが作れちゃうんです!!!


コンパイルの方法

コンパイルするには、yaneGameSDK 1.XX が必要です。プロジェクトに yaneSDK のファイルすべてと、Reversi Project のソースファイルをすべて追加し、必要があれば main.h を修正し、ビルドしてください。

コンパイルの方法の詳細は yaneGameSDK を使うための準備 をご覧ください。また、yaneGameSDK は BM98'S ROOM つう で手に入ります。

 

アルゴリズムの追加方法

以下の3ヶ所に追加記述してください。これを読んだだけではわかりにくいと思いますので、プログラム例なども参考にしてください。

(1) Algorithm.h

関数の宣言に、これから作る関数を追加。

[例]
int Random(CCockReversi * R, int p);
int Yokubari(CCockReversi * R, int p);
int Normal(CCockReversi * R, int p);
int Bech(CCockReversi * R, int p);

(2) Algorithm.cpp

アルゴリズムを記述してください。引数や返り値などは後で説明します。

(3) main.cpp

アルゴリズムの関数名と、アルゴリズムの名前の登録を行います。関数名とアルゴリズム名の順番が対応するようにしてください。

[例]
// アルゴリズムの関数名(最初のNULLの手前に追加してね)
int (*Alg[])(CCockReversi * R, int p) = {
  Bech, Random, Yokubari, Normal, NULL, NULL
};
// 8文字以内のアルゴリズムの名前("blue"の手前に追加してね)
// ちなみに".bmp"を付けたものがコマのビットマップファイル名になる
string AlgName[] = {
  "bech", "random", "yokubari", "normal", "blue", "red"
};

コマの bmp ファイル

アルゴリズムで使うコマのビットマップファイルを、koma フォルダに置いて下さい。サイズは 60 * 60 ドットで、透過色は一番左上のビットの色になります。ファイル名は、"[アルゴリズム名].bmp" としてください。この例の場合は "bech.bmp" になります。

 

自作の関数の引数と返り値について

関数は int Name(CCockReversi * R, int p) のように定義する。引数は必ずこのようにする。

関数の名前 Name
関数の名前なので、重複しないよう、自由につけることができる。

CCockReversi * R
CCockReversi へのポインタ。以下で説明するメンバ関数を R->function( ); で呼ぶことや、R[y][x] で (x, y) のにあるコマを調べたりできる。

int p
1なら自分がプレーヤー1であり、2ならプレイヤー2である。ちなみに、自分が p であれば、相手は 3 - p である。

返り値
コマを置く場所が (x, y) と決まったら、y * 8 + x を返す。つまり return y * 8 + x; とする。

※ コマが置けない場所を返すとバグります。(必ず1ヶ所以上コマが置けるところがあるときのみ、関数が呼ばれるようになっています)

 

CCockReversi のメンバ関数の説明

int Num()
置いてある自分のコマの数を返す。

int NumAll()
置いてあるすべてのコマの数を返す。

int Num(int p)
プレーヤー p のコマの数を返す。

int Get(int x, int y)
自分が (x, y) にコマを置いた時に取れる数を返す。

int Get(int x, int y, int p)
プレーヤー p が (x, y) にコマを置いた時に取れる数を返す。

int Data(int x, int y)
(x, y) にあるコマを返す。

※ これらの関数は、R->function(...); で呼ぶことができる。

※ p の値は、プレイヤー1は 1、プレイヤー2は2である。ちなみに先行がプレイヤー1で、後攻がプレイヤー2である。

※ (x, y) にあるコマは、1でプレーヤー1、2でプレーヤー2、0で無しを表す。

※ x, y は 0 ~ 7 の整数で、左上が x = 0, y = 0 つまり (0, 0) で、右下が (7, 7) 。

その他気付いたものがあれば追加していく予定です。

 

グローバル関数

int Get(int ** before, int ** after, int x, int y, int p)
コマ配置データ before の (x, y) に、コマ p を置いた時に取れる数を返す。さらに after にコマを置いた後のコマは位置データが書き込まれる。

※ この関数は普通に Get(...); で呼ぶことができる。

 

アルゴリズムの例

yokubari(欲張り)アルゴリズム

これは、もっとも多く相手のコマが取れる場所に置くという、かなり単純なアルゴリズムです。プログラムがわからない人は、このアルゴリズムを理解してみてください。C言語の入門書と、このページを読めば、きっと理解できるはずです。

int Yokubari(CCockReversi * R, int p)
{
  int x = 0, y = 0, n = 0, i, j;
  for(j=0; j<8; j++)
    for(i=0; i<8; i++)
      if(R->Get(i, j) > n) {
        x = i;
        y = j;
        n = R->Get(i, j);
      }
  return y * 8 + x;
}

 

アルゴリズム募集

アルゴリズムを作ってくれた人は、是非私にメールで送ってください。送るものは関数本体と、コマのビットマップファイルだけで結構です。なかなか良いアルゴリズムでしたら、Riversi Project のアルゴリズムに追加させていただきます。そしてこのホームページで紹介させていただきたいと思います。そして、まだ開催されるか未定の、アルゴリズム大会にエントリーさせていただきます。

PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]