最近在做軟體構造實驗時,遇到了乙個問題:在實驗中要求乙個支援下棋的遊戲程式,要求棋子無限多。
我起初的想法是在遊戲開始對玩家進行初始化時,給每個玩家配備足夠多的棋子,如:
for
(int i=
0;i)
只要保證單個玩家的棋子填滿這個棋盤,就能夠保證在遊戲中玩家的棋子是無限多的。
但是在初步完成實驗後,進行了測試,發現在棋盤足夠大時,並不能保證玩家的棋子夠用,所以我改變了方法。
由於西洋棋玩家雙方的棋子是有限的,所以需要改變方法:
(1)將圍棋初始化時,分配給兩個玩家,每人乙個棋子
public
void
initgogame
(player playera,player playerb)
(2)由於圍棋的棋子不可以移動,所以我選擇在每次玩家放置棋子後,再為他分配乙個棋子,這樣就可以使得玩家永遠擁有一顆未放到棋盤上的棋子,就保證了棋子的無限多。
然而之後我遇到了乙個新的問題,我在player類中儲存玩家的棋子用的是set,但是在放置棋子的時候無法檢視set中的「下乙個棋子」,故而,我需要將set中的元素變的有次序,在過去的實驗操作中,我知道list中的元素是有次序的,所以,我想在放置棋子時將儲存棋子的set轉化為乙個list,在取出需要位置的棋子,這樣就可以完成下棋了。
所用到的語句:
list list =
newarraylist
(playerpieces)
這樣就能保證玩家的棋子是無限的並且可以進行放置棋子的操作了。 軟體構造筆記 第一章 軟體構造的視角和質量目標
2 執行視角 run time 2 軟體構造是檢視間的轉換 2 軟體構造的質量目標 2 軟體構造的5個目標 多維度視角 軟體構造 檢視間的轉換 學習目標 軟體系統 程式 資料 文件 規約等 開發視角關注 開發 瞬時 視角 邏輯上程式塊的組織,包含詞彙 語法 如ast 語義 如class diagra...
關於List和切片的一些問題?
1 如何拼接兩個列表?class 1 張三 李四 class 2 王五 錢六 使用 號直接拼接 class 1 class 1 class 2 使用list.extend 方法 class 1.extend class 2 2 如何判斷列表為空?while true 學生乙個乙個走出教室,並報上名字...
實驗一 問題陳述和詞彙表
一 問題陳述 背景 網上購物。範圍 本購物系統。實現及功能 遊客 遊客只能瀏覽商品和註冊,該系統只能用手機號註冊,並需要繫結郵箱和完善資訊等。商家 通過註冊賬號的使用者,擁有消費者的功能,同時開啟商鋪後,擁有上下架商品 調整商品 檢視訂單資訊 回答消費者 處理退貨要求等許可權。商品 商家銷售的貨物,...