2015/08/26

フリーソフト紹介:囲碁クエスト

スマホ向けのフリーソフト「囲碁クエスト」を紹介します。9路盤と13路盤でネットワーク対戦ができます。下図はボットと対戦したときのスクリーンショットです。

Igo_quest

級位・段位およびレーティングを算出してくれるので、自分の実力がどの位なのかを把握することができます。初心者にとってはコンピュータ囲碁は強すぎるので、同じ位の強さの相手をマッチングしてくれるこのソフトでの対戦のほうが、勉強になるような気がします。

下図は私の現在のレーティングです。最近ようやく黒でも勝ち越せるようになってきました。

Igo_quest_my_page

ルールは中国ルールでコミは7目です。時間制限があるので手軽にゲームを楽しめます。

| | コメント (0) | トラックバック (0)

2014/07/21

プログラミング講座(156) すごろくゲーム

今回は TextWindow 画面で動きを持たせるプログラムを書いてみました。プログラムを DFZ772-0 として発行しました。所々コメントのみがあってコードがない部分がありますが、そこは未完の部分です。

メインループ

2重のループになっています。外側はゲームの繰り返しです。内側のループはプレイヤー交互に駒を進めるためのループです。

' Monopoly Like Game 0.2a
' Program ID DFZ772-0
nextGame = "True"
' Declare arrays for the squares, chance and community chest
InitBoard()
While nextGame
 ' Prepare the game
 playerPos[1] = 1 ' start position for player 1
 playerPos[2] = 1 ' start position for player 2
 DrawBoard()
 ' Start the game
 continue = "True"
 While continue
  ' Play by player 1
  player = 1
  Play()
  If continue Then
   ' Play by player 2
   player = 2
   Play()
  EndIf
 EndWhile
 ' Game ending
 ' Ask next game
EndWhile

盤の初期化

すごろくの盤(ボード)を初期化します。各マス目の TextWindow 内での位置(行と桁)を計算しています。

Sub InitBoard
 colMax = 11
 rowMax = 11
 playerColor[1] = "Yellow"
 playerColor[2] = "Cyan"
 posMax = (colMax + rowMax - 2) * 2
 For i = 1 To posMax
  If (1 <= i) And (i < rowMax) Then
   colPos[i] = 1
   rowPos[i] = rowMax + 1 - i
  ElseIf (rowMax <= i) And (i <= rowMax + colMax - 2) Then
   colPos[i] = i - rowMax + 1
   rowPos[i] = 1
  ElseIf (colMax + rowMax - 1 <= i) And (i <= 2 * rowMax + colMax - 2) Then
   colPos[i] = colMax
   rowPos[i] = i - rowMax - colMax + 2
  ElseIf (2 * colMax + rowMax - 1 <= i) And (i <= posMax) Then
   colPos[i] = posMax - i + 2
   rowPos[i] = rowMax
  EndIf
 EndFor
EndSub

盤の描画

マス目を全て描画します。

Sub DrawBoard
 For pos = 1 To posMax
  DrawSquare()
 EndFor
EndSub

マス目の描画

一つのマス目を描画します。TextWindow で自由な位置に描画するには、TextWindow.CursorLeft と TextWindow.CursorTop に画面上の位置(桁, 行)を指定します。(0, 0) が左上の桁と行です。

Sub DrawSquare
 ' param pos
 col = colPos[pos]
 row = rowPos[pos]
 left = (col - 1) * 7
 top = (row - 1) * 2
 ' Draw top row
 TextWindow.CursorLeft = left
 TextWindow.CursorTop = top
 TextWindow.Write("+------+")
 top = top + 1
 ' Draw center row
 TextWindow.CursorLeft = left
 TextWindow.CursorTop = top
 TextWindow.Write("|")
 If pos = 1 Then
  TextWindow.Write("GO")
 Else
  If pos < 10 Then
   TextWindow.Write(" ")
  EndIf
  TextWindow.Write(pos)
 EndIf
 TextWindow.ForegroundColor = playerColor[1]
 TextWindow.Write(" ") ' reserved for player 1
 If playerPos[1] = pos Then
  TextWindow.Write("o")
 Else
  TextWindow.Write(" ")
 EndIf  
 TextWindow.ForegroundColor = playerColor[2]
 TextWindow.Write(" ") ' reserved for player 2
 If playerPos[2] = pos Then
  TextWindow.Write("o")
 Else
  TextWindow.Write(" ")
 EndIf  
 TextWindow.ForegroundColor = "Gray"
 TextWindow.Write("|")
 top = top + 1
 ' Draw bottom row
 TextWindow.CursorLeft = left
 TextWindow.CursorTop = top
 TextWindow.Write("+------+")
 top = top + 1
EndSub

プレイヤーの1手

プレイヤーの1手を行います。サイコロを振り、出た目の分だけ駒を進めます。本来は止まったマス目で指示が出たり、いろいろなイベントが起きますが、コメントのみで実際のコードは省略しています。

Sub Play
 ' Input some key to roll the dice
 TextWindow.CursorLeft = 0
 TextWindow.CursorTop = rowMax * 2 + 1
 TextWindow.ForegroundColor = playerColor[player]
 TextWindow.Write("Player " + player +" --> ")
 TextWindow.ForegroundColor = "Gray"
 TextWindow.Write("Press enter...")
 TextWindow.Read()
 TextWindow.CursorLeft = 13
 TextWindow.CursorTop = TextWindow.CursorTop - 1
 ' Role the dice
 d = Math.GetRandomNumber(6)
 TextWindow.ForegroundColor = playerColor[player]
 TextWindow.WriteLine(d + " ")
 TextWindow.ForegroundColor = "Gray"
 For i = 1 To d
  MoveToNext()
  DrawBoard()
  Sound.PlayClickAndWait()
 EndFor
 ' Show the player's tactics
 ' If the new position is owned by the other player
  ' Try to deduct the rent
  ' If player has no rent
   ' Sell one of his properties
   ' Calculate the remainder
 ' Judge of game end
EndSub

駒の動き

駒の位置を playerPos という配列に入れて表しています。

Sub MoveToNext
 p = playerPos[player]
 p = p + 1
 If p > posMax Then
  p = 1
 EndIf
 playerPos[player] = p
EndSub

今回のプログラムは以上です。今回のポイントは TextWindow.CursorLeft と TextWindow.CursorTop を利用して TextWindow のプログラムに動きを持たせたところです。なお、この手のプログラムはブラウザ上(Silverlight の環境)では動作しません。Small Basic IDE でダウンロードして実行してください。

このような方法で TextWindow を使ったシューティングやスクロールゲームも作れると思います。次回からは GraphicsWindow を使ったゲームに挑戦してみたいと思います。

(つづく)

| | コメント (0) | トラックバック (0)

2013/11/07

iPadゲーム紹介 最強の囲碁HD

iPad用のゲームを買いました。「最強の囲碁HD」というゲームです。600円なのでリーズナブルだと思いました。iPhone用は「最強の囲碁」という名前です。

最強の囲碁HD

上は Level 1 に勝利した図です。コンピュータ(白石)はこの局面で投了しました。

このゲームの AI は CrazyStone という正しく最強の AI を搭載しています。ゲームの開発元は UNBALANCE という会社で、私が囲碁の勉強を始めた「お父さんのための囲碁3 FMV」というWindows用のゲームを開発した会社でもあります。

下は「お父さんのための囲碁3 FMV」 Level 1 に2007年に初勝利した図です。

お父さんのための囲碁3 FMV

| | コメント (0) | トラックバック (0)

2012/01/24

フリーソフト紹介:数独

FacebookやGoogle+などのソーシャルネットワークから起動できるようなゲームが徐々に増えてきました。その中で、3種類のSudoku(数独)ゲームを試してみました。

1. Google+のSudoku
Google+というGoogleのソーシャルネットワークに登録すると幾つかのゲームが用意されています。その中にこのSudokuがあります。
Google+のSudoku
ゲームは初級からスタートします。解けると中級、上級を選べるようになります。上級になるほど画面上では解けなくなり、紙に答えの候補を書いて解くことになります。まだ使ったことがないですが、友だちを招待する機能があります。画面は日本語です。

2. GoogleアプリケーションのSudoku
GoogleのブラウザChromeにGoogleアプリケーションというページができました。ここにはネット上のさまざまなアプリケーションを選んで登録できるのですが、Sudokuも何種類かあります。その中の一つを試しました。
GoogleアプリケーションのSudoku
このSudokuは9x9以外にもサイズや難易度を選択することができます。答えの候補を画面上に残せるので、紙を使う必要はありません。結果がグラフで表示され、他のユーザと解いた時間を比較できます。友だちを招待する機能はありません。画面はフランス語と英語のようです。

3. FacebookのSudoku
ソーシャルネットワークのFacebookにアプリとゲームのコーナーがありGoogleアプリケーションほどの登録数はありませんが、そこから幾つかのゲームが選べます。その中のSudokuを試してみました。
FacebookのSudoku
このSudokuは、Novice(初級)、Apprentice(中級)、Master(上級)、Zen Master(エキスパート)の4段階が選べます。まだ、中級までしか試していませんが、音楽付きで解けると点数が表示されることもあり、結構楽しめます。結果をFacebookのウォールに投稿したり、友達に挑戦したりする機能もあります。画面は英語です。

以上の中では3番目のSudokuが一番気に入りました。

| | コメント (1) | トラックバック (0)

2012/01/21

ゲーム情報学

今月の情報処理学会誌『情報処理』は「ゲーム情報学」の特集が掲載されています。
『情報処理』2012.2表紙

ルービックキューブ、数独などのパズルも含め、大貧民、麻雀、ポーカー、将棋、囲碁、どうぶつしょうぎ、アワリ、五目並べ、チェッカー、ジャンケンなど、コンピュータで扱われるさまざまなゲームについての最近の情報が紹介されています。

この特集が書かれる際にはまだ結果は出ていませんでしたが、1月14日に行われた「第1回電王戦」では米長邦雄元名人と将棋ソフト「ボンクラーズ」が対決し、ボンクラーズが勝利しました。

コンピュータチェス「Deep Blue」がチェスの世界チャンピオンKasparov(カスパロフ)に勝利したのが1997年。それから15年たった今日、コンピュータ将棋もいよいよトッププロに照準を定め始めたところです。

日本にはすばらしい囲碁、将棋の歴史があり、そういったゲームから学ぶことも多くあります。また、コンピュータゲームの分野にも日本は多大な貢献をしており、「ゲーム情報学」の研究成果が広く世の中に役立っていくことを期待します。

| | コメント (0) | トラックバック (0)