
簡單易用的滑鼠連點程式...Facebook上面的小遊戲也適用,不會當機~
完全不占空間,沒有相容性問題...
只要是Windows就可以用...
finalfrank 發表在 痞客邦 留言(3) 人氣(8,109)

在計算機圖學上有所謂的Rubberbanding
每畫下一次,就要把上一次的擦掉 否則會有殘影存在!
而這個動作要怎麼辦到呢?
finalfrank 發表在 痞客邦 留言(1) 人氣(528)

3D圖學引擎 OpenGL中
設定相機是一個不可或缺
但是又相當難懂的步驟
以下來說明~
finalfrank 發表在 痞客邦 留言(0) 人氣(1,305)
新建專案 -> Console Application -> 選 DLL File
1. 在 DLL 檔裡面要先 Define 這行!
#define DLL extern "C" __declspec(dllexport)
2. 開始在 DLL 檔裡面寫 Function !!
DLL int sum(int c){ return ++c; }
--------------------------------------DLL 檔寫完了
如何呼叫 DLL 檔裡面的 Function ?
在一個MFC程式中..
HINSTANCE hinstDLL=LoadLibrary(L"theDLL.dll"); //讀取 DLL
if(hinstDLL!=0){ //如果有找到 DLL 檔
typedef int(__cdecl *Connect)(int i); //先宣告一下要連結的函式的prototype
Connect Proc; //宣告一下連結用的Connect指標 (應該是指標吧!?)
Proc = (Connect)GetProcAddress(hinstDLL,"sum"); //用Proc連結 DLL 中的函式
int get=Proc(2); //開始使用DLL中的函式,注意DLL中的函式名稱從sum變成Proc了
FreeLibrary(hinstDLL); //DLL用完沒有利用價值了,就可以扔了
CString g;
g.Format((CString)"%d",get); //這三行是顯示函式回傳的值,應該是2+1=3 才對
MessageBox(g);
}
else{ printf("找不到你的DLL檔啦!你放在哪裡!?"); }
finalfrank 發表在 痞客邦 留言(1) 人氣(1,171)
Pipeline
overlapping execution / Parallelism improves performance
if -> instruction fetch
id -> decode instruction and (read) register
ex -> execution (operation) and calculate address
mem -> (access memory operand)
wb -> write result back to register
hazards
1. Structure
require separate instruction/data memories or caches
2. Data
a.stall b.bypassing/forwarding c.scheduling
3. Control
a.stall b.prediction c.reduce branch time
SRAM / Cost Highest / Speed Fastest
DRAM / Cost Higher / Speed Faster
Magnetic Disk / Cost the less / Speed slowest
cache
1. direct associated 2.set associated 3.fully associated
Write-through -> Updates both upper and lower hierarchy memory
Write-back -> Updates both upper hierarchy memory, and updates lower if needed
compulsory miss -> 一開始啟動時沒寫入資料 肯定會發生的miss情況 (cold start miss
)
capacity miss -> due to finite cache size
conflict miss -> due to not fully associated
virtual memory -> the main memory works as a "cache" of a magnetic disk
bit->byte->word->block->page
register->cache->memory->secondary magnetic disk
RAID 0 - No Redundancy
RAID 1 - Mirroring
RAID 2 - Error Detection and Correction Code
RAID 3 - Bit Parity Bit
RAID 4 - Block Parity Bit
RAID 5 - Distributed Block Parity Bit
RAID 6 - P+Q Redundancy
finalfrank 發表在 痞客邦 留言(0) 人氣(138)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char str[] = "This is a good example"; //要被分割的
char *s = strtok(str, " "); //分割的判斷字元
char *put[100]; //分割後放入新的字串陣列
int s_count=0; //分幾個了
while(s != NULL) {
put[s_count++]=s; //把分出來的丟進去 結果陣列
s = strtok(NULL, " "); //我不知道 這行幹嘛
}
for(int x=0;x<s_count;x++) //驗收成果
printf("%d %s\n",x,put[x]);
system("pause");
return 0;
}
/*補充 其實改成 strtok(str," @"); 這樣的話
即使是 This@is a good@example
也會分成 "This" "is" "a" "good" "example" 了*/
finalfrank 發表在 痞客邦 留言(2) 人氣(14,378)
-- 「到了末時,人來往奔跑,知識就增加。」(但以理書12章4節)
隨著時代的發展,世界上的學問越來越多。
finalfrank 發表在 痞客邦 留言(1) 人氣(143)
Program:放在二次儲存裝置中,尚沒有被Load到記憶體的一堆Code
稱之為「程式」。 (也就是還是死的)
Process:已經被Load到記憶體中,任何一行Code隨時會被CPU執行,且其宣告的在記憶體
的變數的值會隨著需求而不斷變動。
稱之為「程序」。 (也就是活的Program) => 恐龍本第三章
一個多工作業系統(Multitasking Operating System)可以同時運行多個Process
然而一個CPU一次只能做一件事情,但CPU的數量永遠少於運行中的Process數,
因此每個Process使用的時間需要被排程(Scheduling) => 恐龍本第五章
又每個Process間在記憶體中,如果擺放的方式不當,就會在記憶體中產生很多
沒辦法用到的碎片,因此MemoryManagement是一個問題 => 恐龍本第八章
另外,每個Process所需要的記憶體總合,也可能大於實體記憶體,因此需要另
外用二次儲存裝置充當虛擬記憶體(Virtual Memory),但是二次儲存裝置的速
度肯定很慢,因此如何做到對虛擬記憶體最小的依賴,盡量避免Page Fault(電
腦在主記憶體中找不到資料,而要去二次記憶體找,就稱為Page Fault)
防止Thrashing的發生(因為Virtual Memory演算法不當,造成幾乎每次存取都要
依賴二次記憶體,就是Thrashing),以達到效能最佳化,也是個學問 => 第九章
Thread :在同一個Process底下,有許多自己的分身,就是Thread,中文又翻成執行緒。
以往一個Process一次只能做一件事情,因此要一面輸入文字,一面計算字數,
這種事情是不可能的。但是有了Thread之後,可以在同一個Process底下,讓輸
入文字是一個Thread,計算文字又是另外一個Thread,對CPU來說兩個都是類似
一個Process,因此兩個可以同時做。
又一個Process底下有數個Thread,而一個Process的Global Variable可以讓
它的所有Thread共享,也就是所有Thread都可以存取同一個Process的Global
Variable。而每個Thread自己也有自己的專屬Variable。 => 恐龍本第四章
但是,如果有兩個Thread要存取同一個Global Variable,有可能發生問題,
也就是說可能會存取到錯的值(例如兩個Thread同時要對一個Variable做加減,
最後那個答案可能會是錯的),這就是Synchronization問題 =>恐龍本第六章
又,每一個Thread之間可能會互搶資源,而造成死結(Deadlock),只要以下四
個條件都滿足就有死結。(1)這個資源不能同時給兩個人用 (2)有一個人拿了一
個資源,又想拿別人的資源 (3)如果一個人占了茅坑不拉屎,占用資源很久,仍
不能趕他走 (4)A等B,B等C,C等D,D又等A 等成一圈。 要解決這種狀況有
Avoid(預防) 或 避免(Prevent)兩種方式,破除以上四種其中一種即可。
=> 恐龍本第七章
finalfrank 發表在 痞客邦 留言(12) 人氣(61,739)
上一篇FinalFantasy的系統 用到了執行緒的概念 (multithreading)
但是執行緒必須配合其運行的作業系統才能使用
這次的DragonQuest並沒有使用到執行緒
所以其實在DOS底下就可以寫出一個模擬程式了
================================================
Dragon Quest的特點是「真正的回合制」
每一回合,必須在敵我雙方把指令都做完之後,才會發動
然後依據雙方的速度,去決定哪一個角色先動作
有趣的是,只要你下完指令之後,這一回合就是完全看電腦動畫表演給你看了
也就是一旦下完指令之後,你角色這一回合的生死就聽天由命啦!
================================================
在一回合開始的時候,指令選單會開啟,讓你去決定角色要做什麼動作
全部的角色都指定完動作之後,電腦就開始抓取各角色目前的速度值
例如抓到的速度值是
finalfrank 發表在 痞客邦 留言(2) 人氣(425)
finalfrank 發表在 痞客邦 留言(0) 人氣(325)