五子棋人機實現和人人實現(java)
一.前言
這學期期末課程設計選題選的是《用java完成五子棋人機以及人人對戰》。其中人人主要是java的網絡編程,運用UDP,socket來傳輸數據,每當有一方下棋,那麼就會發送下棋一方的位置信息,這部分主要是調試比較麻煩,需要用兩臺電腦(一臺電腦也可以實現);人機的主要難點在於電腦怎麼下棋,其實這是程序最精華的部分,你的人機要夠聰明。我這裏寫的人機比較簡單,大概是入門偏上的等級,其中主要的思路是在別的博客上習得。下面貼出代碼:主要看中級人機部分代碼吧,這裏說下大概思路,首先需要遍歷棋盤上每個位置(這裏我的棋盤大小是19*19),對於每一個位置都需要給他計分,具體計分方法是這樣的,在當前位置向八個方向遍歷,如:向上遍歷有3個白棋,那麼這個位置的分數很高,因爲活四(百度搜索一下五子棋基本術語以及含義)就是必贏了,以此類推可以算出每個位置的分數,當然這個分數有兩種,一種是相對於白棋,另一種是相對於黑棋,最後要比較這兩種分數,最後找到棋盤上分數最高的點,電腦就下在這了。如果我的代碼晦澀難懂,那麼我強力推薦一篇csdn博客點擊打開鏈接,寫的非常好。
二.代碼鏈接:
鏈接: https://pan.baidu.com/s/15MeBgO03U1IYS1yv0mtYvQ 提取碼: fo25
運行截圖如下:
1.開始界面
2.人機界面
3.人人界面
三.總結
每次寫課程設計總有一種應付感,實現了基本的功能之後就不再去完善它,這個程序有較多的bug,比如人機對戰中下在邊緣位置的時候會出現很蠢的bug,還有人人對戰的時候,當中途一方退出另一方並不知道。