2007 程式設計比賽 Openfind 大海戰 Openfind Naval Battle 比賽規則  比賽地圖大小暫定為 51x51,地圖無邊界 (從地圖右邊 出去可以從左邊進來)  每個參賽隊伍有 2,000 元的經費  可以買 1 ~ 5 艘船,裝備武器/雷達後,放到地圖上  每艘船每回合可以 攻擊/前進/轉彎/加速/煞車  比賽採用回合制,每個隊伍輪過一次才換下回合 

Download Report

Transcript 2007 程式設計比賽 Openfind 大海戰 Openfind Naval Battle 比賽規則  比賽地圖大小暫定為 51x51,地圖無邊界 (從地圖右邊 出去可以從左邊進來)  每個參賽隊伍有 2,000 元的經費  可以買 1 ~ 5 艘船,裝備武器/雷達後,放到地圖上  每艘船每回合可以 攻擊/前進/轉彎/加速/煞車  比賽採用回合制,每個隊伍輪過一次才換下回合 

Slide 1

2007 程式設計比賽
Openfind 大海戰


Slide 2

Openfind Naval Battle

比賽規則
 比賽地圖大小暫定為 51x51,地圖無邊界 (從地圖右邊
出去可以從左邊進來)
 每個參賽隊伍有 2,000 元的經費
 可以買 1 ~ 5 艘船,裝備武器/雷達後,放到地圖上
 每艘船每回合可以 攻擊/前進/轉彎/加速/煞車
 比賽採用回合制,每個隊伍輪過一次才換下回合
 比賽一次採用 30 回合,30 回合結束以後算分數
 比賽總共打兩次,兩次總分數最高者獲勝

2

Copyright 2006 Openfind Information Technology, Inc.


Slide 3

Openfind Naval Battle

船艦資料

3

大船
(Large)

中船
(Medium)

小船
(Small)

Price

500

300

100

Mobility

4

5

6

Armor

800

500

100

Max Speed 5

7

9

Weapon

全部可使用

砲位

可裝9個武器

16” 砲不能用 16”砲不能用
12”砲不能用
可裝6個武器 可裝3個武器
Copyright 2006 Openfind Information Technology, Inc.


Slide 4

Openfind Naval Battle

Mobility
 每艘船每回合有 mobility 可以使用。大船
mobility=4, 中船 mobility=5, 小船 mobility=6
 加速每次花費 mobility 1
 煞車每次花費 mobility 1
 每門砲開火花費 mobility 1
 轉彎花費 mobility ceil(current speed/2) ceil 
無條件進位。所以船速越高轉彎越困難
 Mobility 花完,該回合這艘船將不能再 加速/煞車/轉
彎/開砲
4

Copyright 2006 Openfind Information Technology, Inc.


Slide 5

Openfind Naval Battle

Current Speed
 一開始每艘船的速度為 0
 速度決定你這次可以往前移動幾格,當然也可以不用移動。
舉例來說,假設目前 current speed=5,船艦可以移
動 0格、1格、2格、3格、4格、5格。
 Current speed 越高,轉彎 (45 度)所需要的
mobility 越高。
 Current speed 越高,敵人對你的命中率越低。詳見後
面的命中率章節。
 加速一次 current speed 加 1
 煞車一次 current speed 減 2
5

Copyright 2006 Openfind Information Technology, Inc.


Slide 6

Openfind Naval Battle

移動方向
7

8

4

1

6

9

6

2

3

1. 方向表示使用鍵盤數字
鍵的九宮格
2. 橫的走、直的走、斜著
走通通算一格
3. 轉彎一次轉 45 度。以
左圖為例,目前方向
=4,右轉的話方向=7,
左轉的話方向=1

Copyright 2006 Openfind Information Technology, Inc.


Slide 7

Openfind Naval Battle

雷達
 一開始每艘船送 RADAR_3,以自己目前的位置為中心
可以看到 7x7 的地圖範圍
 RADAR_5 需要 50 元,可以看到以自己為中心
11x11 的地圖範圍
 RADAR_7 需要 100 元,可以看到以自己為中心
15x15 的地圖範圍
 RADAR_9 需要 200 元,可以看到以自己為中心
19x19 的地圖範圍
 每回合 client 可以從 server 得到整張 map,但是視
野範圍以外的位置通通都是空白的,只能看到自己艦隊所
有雷達可見範圍內的資訊
7

Copyright 2006 Openfind Information Technology, Inc.


Slide 8

Openfind Naval Battle

Armor
 當每艘船的 Armor <= 0,這艘船就被擊沉
 每艘船購買的時候會送 Armor。大船 800,中船 500,
小船 100
 可以花錢買額外 Armor,每點 Armor 花費 0.8 元
 可以把原本送的 Armor 賣掉拿錢去買其他裝備,每點
Armor 可以賣 0.8 元

8

Copyright 2006 Openfind Information Technology, Inc.


Slide 9

Openfind Naval Battle

Weapon
價格

9

射程

傷害

武器
命中率

Machine 30
Gun
5” 砲
70

3

30

100%

4

60

90%

8” 砲

120

4

100

80%

12” 砲

180

5

140

70%

16” 砲

250

7

200

55%
Copyright 2006 Openfind Information Technology, Inc.


Slide 10

Openfind Naval Battle

命中率計算
 A = 開火的火炮命中率
 B = 目標的 current speed
 命中率為 A x (30 – B) / 30
 *** 每回合每門砲只能開火一次
 *** 不能攻擊自己的船艦
 假設用 8” 砲打一艘 current speed 為 9 的小船。
80% x (30-9) / 30 = 56%

10

Copyright 2006 Openfind Information Technology, Inc.


Slide 11

Openfind Naval Battle

大船砲位
0
1

1. 大船最多可以安裝九門砲,
如左圖

2

5

3

6

4

7

2. 大船可以使用所有的武器

8

11

Copyright 2006 Openfind Information Technology, Inc.


Slide 12

Openfind Naval Battle

中船砲位
0

1. 中船最多可以安裝六門砲,
如左圖

2

5

3

6

2. 中船不可以使用 16” 砲

8

12

Copyright 2006 Openfind Information Technology, Inc.


Slide 13

Openfind Naval Battle

小船砲位
0

2

1. 小船最多可以安裝三門砲,
如左圖
5

2. 小船不可以使用 16” 砲
3. 小船不可以使用 12” 砲

13

Copyright 2006 Openfind Information Technology, Inc.


Slide 14

Openfind Naval Battle

遊戲起始
 一開始由 Client 把船艦資訊以及配置資訊上傳到
Server 端。
 每個隊伍必須將自己的艦隊放在一個 5x5 大小的區域中
 首先 Server 會 random 將每支隊伍平均放在地圖上
 Server 等所有隊伍連上後開始運作

14

Copyright 2006 Openfind Information Technology, Inc.


Slide 15

Openfind Naval Battle

分數計算
 攻擊得分為 1.5 倍。假設攻擊命中打掉對方 100 點
Armor,將可以得到 150 分
 擊沉得分
– 擊沉大船額外 +500分
– 擊沉中船額外 +300分
– 擊沉小船額外 +100分

 30 回合到的時候,將會把目前倖存船艦換回錢,武器/
雷達直接換算,Armor * 0.8 換算。這些錢也是分數
 一開始沒有花掉的錢,也算成分數
 兩次比賽總分數最高者獲勝
15

Copyright 2006 Openfind Information Technology, Inc.


Slide 16

2007 程式設計比賽
Openfind 大海戰
Programming Guide


Slide 17

Openfind Naval Battle

Programs you get
 Server
1. bin/Open Naval Battle.exe  Server
program
2. bin/server.conf  You must set IP/port
3. hdebug.conf  * means all the programs
will print out debug logs

17

Copyright 2006 Openfind Information Technology, Inc.


Slide 18

Openfind Naval Battle

Programs you get
 Common
1. The common library for both server and
client。Supposedly, you should NOT modify
those existing programs

18

Copyright 2006 Openfind Information Technology, Inc.


Slide 19

Openfind Naval Battle

Programs you get
 Client
1. A MFC project (Client.dsw)
2. In Client.cpp,
1.
2.
3.
4.
5.
6.
7.
19

BuildFleet  Initialize your 5x5 blocks
Affordable  Check your budget
GetServerConf  Read server IP/port from stdin
InitClient  Use your team name to get corresponding team
ID and the map size
GameStart  Wait for the OP_code from server, and act
according to the OP_code
InitTurn  For each turn, you can re-download map from
server
TakeAction  Your move
Copyright 2006 Openfind Information Technology, Inc.


Slide 20

Openfind Naval Battle

Action validation
 Client has some validation functions to
check your moves.
 If a move is illegal, those validation
functions should return FALSE. Please
check debug log for error.
 If an illegal move is sent to the server,
your team will be kicked out. All your ships
will disappear, and your score will be 0.

20

Copyright 2006 Openfind Information Technology, Inc.


Slide 21

Openfind Naval Battle

Important structure
 Please check /common/gameset.h
 SHIP_INFO  A ship
 INIT_BLOCK  For initial 5x5 block
 CELL_INFO  The world map

21

Copyright 2006 Openfind Information Technology, Inc.


Slide 22

Openfind Naval Battle

Program download
 demo.rar
 OpenNavalBattle.rar

 If there is any bug, please report to
Hector/Phantom (ext 364)

22

Copyright 2006 Openfind Information Technology, Inc.


Slide 23

Openfind Naval Battle

Q&A
作者
Hector Chou
Sam Liu
Phantom Weng
顧問
Andric Yeh

23

Copyright 2006 Openfind Information Technology, Inc.