#include "stdafx.h"
#include "resource.h"
#include "math.h"
#define max_loadstring 100
//全域性變數:
hinstance hinst;
hbitmap chess[2];
hdc hdc,mdc,bufdc;
hwnd hwnd;
dword tpre,tnow;
int board[10][10];
bool ptab[10][10][192];
bool ctab[10][10][192];
int win[2][192];
int num[2];
bool turn,over;
int winner;
//tchar sztitle[max_loadstring];
//tchar szwindowclass[max_loadstring];
// foward declarations of functions included in this code module:
atom myregisterclass(hinstance hinstance);
bool initinstance(hinstance, int);
lresult callback wndproc(hwnd, uint, wparam, lparam);
lresult callback about(hwnd, uint, wparam, lparam);
//函式宣告
void mypaint(hdc hdc);
void initgame();
void comturn();
//****win mian*************************************
int apientry winmain(hinstance hinstance,
hinstance hprevinstance,
lpstr lpcmdline,
int ncmdshow)
//while( msg.message!=wm_quit )
else
}return msg.wparam;
}wcex.cbsize = sizeof(wndclas***);
wcex.style = cs_hredraw | cs_vredraw;
wcex.lpfnwndproc = (wndproc)wndproc;
wcex.cbcl***tra = 0;
wcex.cbwndextra = 0;
wcex.hinstance = hinstance;
wcex.hicon = loadicon(hinstance, (lpctstr)idi_gobang);
wcex.hcursor = loadcursor(null, idc_arrow);
wcex.hbrbackground = (hbrush)(color_window+1);
wcex.lpszmenuname = (lpcstr)idc_gobang;
wcex.lpszclassname = "canvas";//視窗名稱
wcex.hicon** = loadicon(wcex.hinstance, (lpctstr)idi_**all);
return registerclas***(&wcex);
}//*******棋局初始函式*********************************
void initgame()
//初始化棋盤狀態
for(i=0;i<10;i++)
for(j=0;j<10;j++)
board[i][j] = 2;
//設定水平方向的獲勝組合
for(i=0;i<10;i++)
for(j=0;j<6;j++)
count++;
}//設定垂直方向的獲勝組合
for(i=0;i<10;i++)
for(j=0;j<6;j++)
count++;
}//設定正對角線方向的獲勝組合
for(i=0;i<6;i++)
for(j=0;j<6;j++)
count++;
}//設定反對角線上的獲勝組合
for(i=0;i<6;i++)
for(j=9;j>=4;j--)
count++;
}//隨機數決定由那一方先下
srand(gettickcount());
if(rand()%2 == 0)
turn = true;
else
turn = false;
}//*******計算機下棋函式*******************************
void comturn()
}//計算計算機在空位置上的獲勝分數
if(ctab[m][n][i] && win[1][i] != 7)}}
if(max == 0)
if(grades[0][m][n] > max)
else if(grades[0][m][n] == max)
}if(grades[1][m][n] > max)
else if(grades[1][m][n] == max)}}
}board[u][v] = 1; //設定為計算機的棋子數
num[1]++;
if(num[0] == 50 && num[1] == 50)
else
for(i=0;i<192;i++)}}
turn = true; //換由玩家下
}void mypaint(hdc hdc)
textout(hdc,10,470,str,strlen(str));
}else if(!turn) //計算機下棋
else
for(m=0;m<10;m++)
for(n=0;n<10;n++)
else if(board[m][n] == 1) //貼上計算機棋子
else //貼上空格
}bitblt(hdc,10,10,450,450,mdc,0,0,srccopy);
tpre = gettickcount();
}// mesage handler for about box.
lresult callback about(hwnd hdlg, uint message, wparam wparam, lparam lparam)
break;
}return false;
}
五子棋人機對弈
ai下棋演算法部分 一個簡單的演算法 計算機進行計算尋找下棋位置 預設 可改 第一步黑棋 ai 先行 需提供資料 15 15的棋盤落子資料 int board 15 15 0表示無子 1表示play1棋子 2表示play2棋子 下棋步數 非必須 int step。pragma once classa...
五子棋人機對戰
參考 人機對戰 填子游戲的攻防策略 關於機器的應對策略,在前文中有所表述,不一一解釋,本文進行了修繕和補強,但漏銅依然存在。增加了一個倒計時功能,測試了一下,感覺一般,還是留在那裡,表明曾經研究過,供今後完善 增加了棋譜儲存功能和回放功能 增加了悔棋功能,這個還是有些用處的。另外策略中增加了禁手。如...
基於java的人機五子棋
1 任務設計書 本專案要實現的是五子棋人機版,通過制定棋型的評分表使機器能夠對棋盤局勢評估。五子棋玩家雙方分別稱為 人 機器 當人落子後,機器對棋盤掃描獲取可行棋的位置集合,然後遍歷該集合,利用評估函式對每個空位依次估分,得分最高的位置即為機器要落子的位置,在使用評估函式對空位打分時,為了避免機器只...
JS五子棋之人機對戰
文章目錄 1.效果圖 2.ui篇 3.ai篇 先來看看最終實現的效果吧!勝利顯示 主要是使用canvas繪製棋盤以及棋子 canvas繪製棋盤 for var i 0 i 9 i canvas繪製棋子部分 var onestep function i,j,me i,j表示棋盤索引,me表示黑棋或白棋...
Java實現五子棋
一定義常量類 public class constant二定義我們的棋盤類 public class chess private void playchess 錯誤輸入 if str.length 2 正常輸入的情況 判斷是否越界 if isoverstep str else end if 判斷是否...