回分類題庫
g015: B.貪食蛇
關鍵字: NPSC 2006 國中組初賽

測資點 : 2 | Time Limit : 10000 ms | Memory Limit : 128000 KB
Accepted : 35 Times / 27 Users | Submit : 96 Times / 29 Users | Accepted rate : 93%
題目加入時間 : 2011-12-13 09:31

Content: 简体中文

相信大家都有玩過貪食蛇這個遊戲吧!遊戲的內容就是操縱螢幕上的一條蛇,在不撞到障礙物的情況下吃到越多食物越好;每次吃到食物的時候蛇的長度就會變長。由於規則簡單、操作容易,是個很普遍的手機小遊戲。

貪食蛇中,遊戲範圍為 40 ╳ 20 的方格,左下角為 (1,1),右上角為 (40,20)。 外圍是一圈牆壁;一開始分數為零,蛇長五單位,頭的位置在 (5,10),尾端在 (1,10),方向向右;遊戲時間從零開始計算,小蛇的行進速度為每一單位時間沿前進方向前進一個方格並拉動身體,身體第二格移到蛇頭的位置,第三格移到第二格的位置,以此類推(注意,身體的移動為同時的)。行進中如有改變行進方向的指令,便依指令於下一單位時間開始改變方向;但如果指令的方向和原本的方向相同或相反則為無效的指令,不需理會。前進遇到阻礙沒有轉彎直接撞上去時遊戲結束。阻礙物可能為地圖邊界的牆壁或是蛇的身體。

遊戲進行中會有食物在地圖上出現,且不會出現在和蛇身重疊的地方;當小蛇吃到食物時身體長度會增加一個單位,而在其他地方會有另一個食物出現。詳細過程為:蛇頭和食物重疊,食物消失,在下一個單位時間在地圖其他地方出現另一個食物,同時蛇頭往蛇的行進方向延長一單位,其他部位留在原地。每吃到一個食物便增加分數十分。

玩家在遊戲結束後,除了紀錄最高分數之外,有時也希望能夠紀錄下自己遊戲的過程畫面;遊戲製作者設計了一種紀錄遊戲資料的方法,而將把資料轉換成遊戲畫面的任務交託給你。

Input:

輸入檔裡有多筆測資,每筆測資為一完整的遊戲進行過程的資料。第一行有三個正整數 M, N, K(1 ≦ M ≦ 395, 1≦ N ≦ 10000, 1 ≦ K ≦ 1000),表示食物和指令以及問題的數目。接下來 M 行每行有兩個數字x, y,表示食物出現的座標(依出現時間排序,第一個食物在時間零時就出現了)。再來 N 行每行有一個字串和一個正整數,表示指令的方向(up, down, left, right)和指令的時間。最後 K 行每行一個正整數 T,代表你必須印出遊戲畫面的時間點。每個部份的資料都依照時間的順序由先而後排列。第一行為三個零“0 0 0”為檔案結束,不須處理這組輸入。

Output:

對每個輸出時間點輸出一行,包括當時蛇的長度、分數,以及蛇頭及蛇尾的座標,每個項目以一個空白隔開,參考範例輸出。每筆測資最後一行輸出遊戲結束時間、長度、分數。兩筆測資間以空白行隔開。

Sample Input:help

若題目沒有特別說明,則應該以多測資的方式讀取,若不知如何讀取請參考 a001 的範例程式。
2 4 8
20 10
21 20
up 16
left 26
right 30
up 35
0
1
15
16
17
26
27
32
0 0 0

Sample Output :

5 0 (5,10) (1,10)
5 0 (6,10) (2,10)
5 10 (20,10) (16,10)
6 10 (21,10) (16,10)
6 10 (21,11) (17,10)
6 20 (21,20) (21,15)
7 20 (20,20) (21,15)
7 20 (15,20) (21,20)
36 7 20

Hint :

本題官方版測資有誤,故採用本站管理員測試修正過之測資。

Author :

NPSC 2006 國中組初賽 (管理員:sagit)

  Solve it!   Status Forum