這個遊戲是模擬船艦對戰的過程由一個父行程產生一個子行程,然後雙方分別在自己一個4×4的地區中任意擺放一艘2×1的砲艇,輪流炸對方。模擬過程中,4×4的地區左上角座標為(0,0),右下角座標為(3,3)。程式從命令列讀入兩個參數,第一個參數p1與第二個參數p2用來分別指定父行程與子行程的亂數種子(0~99的整數)
- 父行程產生一個子行程。
- 父行程與子行程分別在自己的4×4的地區中佈署一艘2×1的砲艇。砲艇位置以隨機方式決定並印出,且互相不知道對方位置。
- 由父行程隨機選擇一個位置進行轟炸,此位址透過POSIX shared memory傳給子行程。子行程也透過透過POSIX shared memory回傳炸轟結果給父行程,並印出炸射結果。可能的炸射結果如下:
- 未擊中。
- 擊中,但砲艇未沈沒。
- 擊中,砲艇沈沒。(判斷沈沒的條件是砲艇所有的位置均被擊中)
- 接著輪流由雙方隨機決定位置來炸對方砲艇,直到有一方炸沈對方的砲艇為止。當有一方砲艇被炸沈時,此時子行程結束,然後由父行程印出對戰結果。
- 過程中,父行程與子行程都要印出炸射的過程,以及自己的pid。結束的時候也要印出勝利的一方用了幾顆炸彈。
> g++ filename.cpp -o filename -lrt
> ./filename
> 請輸入Parent和Child的亂數種子和0(基本功能)
> 0 0 0