一、來源
GitHub專案
二、執行環境及執行結果截圖
執行環境:Windows 11 | visual studio 2022
執行結果截圖:
可以實現基本的五子棋對弈功能
三、主要問題列表
-
開局不能選持方
main函式中增加條件判斷,可根據輸入結果選擇ai和玩家誰先落子。 -
結束後無法快速再來一局
結束後利用MessageBox和outtextxy跳出遊戲結束的視窗,讓使用者可以選擇再來一局,用stk.pop清空使用者輸入,並關閉視窗,重置ai和玩家落子資料。 -
介面太亮
調色即可。
四、新程式碼
實現開局選子:int inition; cout << "請選擇所執的子:" << endl; cout << "執黑:1 執白:2" << endl; cin >> inition;while (1) { if (inition == 2) { ai.Get_key_Setchess(mychs); //Al first set chess s.show(mychs, user); //show the map if (ai.gameOver(s, user)) goto Start; mychs.now = true; // now is you s.Mouse(mychs, user); // you secondly set the chess,set now = false s.show(mychs, user); if (mychs.gameOver(s, user)) goto Start; } else { mychs.now = true; s.Mouse(mychs, user); s.show(mychs, user); if (mychs.gameOver(s, user)) goto Start; ai.Get_key_Setchess(mychs); if (ai.gameOver(s, user)) goto Start; } }
實現再來一局:
if (who == 1) { MessageBox(0, _T("恭喜您勝利!"), _T("YES"),MB_ICONWARNING | MB_SYSTEMMODAL); Sleep(1000); setbkcolor(GREEN); cleardevice(); outtextxy(250, 200, _T("恭喜您勝利!")); outtextxy(250, 300, _T("請按任意鍵繼續遊戲...")); user.wincnt++; user.restcnt += 10; if (user.minsteps == 0) user.minsteps = steps; else user.minsteps = min(user.minsteps, steps); mciSendString(_T("close win"), NULL, 0, NULL); mciSendString(_T("open win.wav alias win"), NULL, 0, NULL); mciSendString(_T("play win"), NULL, 0, NULL); } else { MessageBox(0, _T("您失敗了,不要灰心下次再來吧!!"), _T("NO"),MB_ICONWARNING | MB_SYSTEMMODAL); Sleep(1000); setbkcolor(GREEN); cleardevice(); outtextxy(250, 200, _T("您失敗了,不要灰心下次再來吧!")); outtextxy(250, 300, _T("請按任意鍵繼續遊戲...")); mciSendString(_T("close det"), NULL, 0, NULL); mciSendString(_T("open defet.mp3 alias det"), NULL, 0, NULL); mciSendString(_T("play det"), NULL, 0, NULL); user.failcnt++; } user.Write(); int ch = _gettch(); while (!stk.empty()) stk.pop(); aiPos = 0; myPos = 0; closegraph();
調色:
setbkcolor(WHITE);
五、測試截圖
- 可自由選持方:
- 獲勝失敗有視窗反饋:
- 任意按鍵即可一鍵重新開始遊戲
六、總結
我們在程式設計的過程中不能思維固化,試著換一個角度,從使用者角度去體驗程式,就能發現很多之前發現不了的不便之處,這就是我們努力最佳化程式體驗的方向。軟體工程從來不是單方的程式設計與設計,而是程式設計與使用者體驗的雙向奔赴,只有培養逆向軟體工程的思維,學會站在使用者體驗的角度上思考問題,才能夠做出使用者喜歡、使用便捷的產品。