• 沒有找到結果。

Keyboard DDR – an implementation B94902021

N/A
N/A
Protected

Academic year: 2022

Share "Keyboard DDR – an implementation B94902021"

Copied!
4
0
0

加載中.... (立即查看全文)

全文

(1)

Computer Organization and Assembly Languages Final Project

Keyboard DDR – an implementation

B94902021 陳奕傑 B94705018 謝宗桓

(2)

一、 研究動機

當初我們一起構思期末專題要做什麼,發現一些常見的小遊戲像是打磚塊、

貪食蛇等等都已經有人做了,就在我們想不出來題材的時候,我突然想到每 次去男宿找朋友,都會看到他的室友聚精會神的用手指玩著鍵盤上的跳舞 機,大概是線上遊戲之類的,這短暫的靈光一現,使我們決定把研究題目設 定為實作一個在鍵盤上進行的跳舞機遊戲。

我們實作出的程式可分為三個部分 a. 紀錄一個節奏的範本

這個部份是由

b. 依照節拍撥放錄下的範本 c. 跳舞機遊戲

二、 程式說明

整個程式主要是由 C 來 implement,遊戲的介面是 console。

在 Record(),我們記錄下使用者一開始所鍵入的舞步,並將它們存到 structure 中,在這裡,我們使用 X86 assembly 來 implement,原因是雖然在課堂上的作業 中,我們都是由 C or C++當作 main frame,並使用 assembly 來 optimization,可 是卻沒有真正學到如何在未來真正能夠獨立將 C 的核心 code outsourcing,因此 在這邊除了可以節省紀錄時的時間,使得 timer 能夠更準確的紀錄使用者所輸入 的舞步,更學到了如何將兩邊的檔案真正結合起來,使得將來能夠在這方面有所 應用。這裡面我們先讀入鍵盤所 key in 的文字,如果是 w, a, s, d 其中一個,則將 其記錄下來,並同時將其發生時間記錄在一個 structure 中。

時間的計算是利用 SetTimer 這個 Win33API,每隔 100Msec 就將 time_count 加一,而每筆 key in 的時間點就是 time_count 的數目。

在 play 中,我們將剛剛記錄下的舞步,按照時間順序、節奏 print 出來,以 確認剛剛輸入的舞步是正確的。

在 dance 中,我們在遊戲界面前多設置一個 score zone,只要在這個範圍內 key in 對的方向,即得到 1000 分。藉由累積分數判斷強弱。

關於 Assembly 的部分,我們主要是用它來加速對於 array 的運算,有三個 assembly 的 module,clrarr、record 和 shift,分別用來清 array、紀錄輸入的東西 和搬移 array 內容。我們使用課本 12 章的方法,從 C code 當中 call 一個 extern 的 function,來執行組語的部分。

三、 程式示範

(3)
(4)

參考文獻

相關文件

就是為了讓我們能夠設計一個控制器 (con- troller) 來達到各種不同需求的目標, 如同我 們前面所舉的例子, 為了設計控制系統, 我們 就必須有一些先前的準備工作, 在這裡我們 將它分成 5

這個都是很將來的事情,而現在我們都沒有答案的事情。我們現在必須要做 的也只是說,能不能把這個目前的情況先第一步減緩,

也將在法中死去。我們只是沒有體會到法在哪裡,一直到經由佛 陀的教導將它指出來,為我們提供一條簡單的路去追隨。我們另

可以預知的, 一個 asymmetric 編碼系統因為 encryption function 複雜, 所以 才會造成 encryption function 很難找到..

這些方法 不外乎縮小了原來 encryption function 的定義域使得 encryption function 成為一對一的函 數, 因此最後能解出唯一的 plaintext.. 不過要提醒的是, 這些方式某種程度上會破壞原本

這兩個唯一性, 事實上不需要知道向量的 加法如何定義, 直接用 vector space 的性質就可以證明, 也就是說這個結果對一般的 vector space

使用 BibTEX 的 L A TEX 文件, 編譯過程有時有點讓人困惑。我們這裡假設以 foo.tex 為我們的 L A TEX 檔 (BibTEX 檔叫什麼無妨, 只要我們在文中引用

兩個 statement forms 在所有情況之 下其 truth tables 皆相同,我們便稱它們為 logical equivalent.. 不過在我們 日常用語中 “或”