![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0n8O7hdmaD6WODz5Ulm56jAlPQ2bz2OggFpwGrVXCLywwmJQ3F34coFubodJecyVfnLmXkroggcxp8_o6ZMmVgMEDdVPeSqSWKMJz_TVsfcCuF_tRNYdOYTkAu2EDMGd2NWjXLgA3TLI/s320/%E4%BA%95.jpg)
此程式是在伊莉論壇的daviddr大大所寫的
雖然看起來簡單,不過程式碼跟畫面顯示方式還蠻不一樣的
因為在console模式還能用滑鼠操控...蠻特別...
加上程式碼很短,不到30行
有在練C/C++程式滴大大們,加減參考看看囉~
以下為程式碼:
#include <windows.h>
#include <stdio.h>
extern "C" WINBASEAPI HWND WINAPI GetConsoleWindow();
int main()
{
short pos, x, y, ch = 0, rnd = 0, c[11] = {0};
short win[] = {7,56,73,84,146,273,292,448,0}, *w;
char map[] = "□ □ □\n□ □ □\n□ □ □\n";
COORD o = {0,0};
POINT p; puts (map);
while (rnd < 9) {
GetCursorPos (&p);
ScreenToClient (GetConsoleWindow(), &p);
pos = (x=p.x-2)/21 + ((y=p.y-2)/15)*3;
if (x<0 || x>60 || y<0 || y>42 || c[pos] ||
GetAsyncKeyState (1)>=0) continue;
SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE),o);
map[pos*3] = "○╳"[ch*2];
map[pos*3+1] = "○╳"[ch*2+1];
puts (map);
c[ch+9] |= (c[pos] = 1) << pos;
for (w=win; *w; *w==(c[ch+9]&*w)? rnd=99, w=win+8: w++);
if (rnd != 99) ch = !ch, rnd++;
}
system ("pause"+!printf (9==rnd? "平手":"%c 獲勝","OX"[ch]));
}
此文章來自這裡。
沒有編譯器來編譯程式碼的朋友,可以點我下載執行檔跑跑看。
沒有留言:
張貼留言