先來探討用C寫吃角子老虎....
用C開發電腦遊戲 最基礎的關鍵
在於
你對Process、Thread 和 I/O 的掌握如何?
舉一個例子,
你有沒有辦法寫一個程式,
該程式畫面上會不斷的跑出字幕,直到你按下任意鍵,畫面才會停止顯示字幕?
這時候你腦中一定會浮現 getchar(); system("pause"); 這些方法
但肯定都沒用
因為只要出現那些函式,你的流程就會被卡住,畫面就不會繼續跑出字幕了!
而我們的命題是,要你按下按鍵,畫面「才」停止顯示字幕啊!
所以 C語言的 單執行緒思維,就必須要被炳棄了!
所以說「多執行緒」就是設計遊戲的關鍵。
一個 I/O 給他一個執行緒,大致就是關鍵了。
(你不能讓鍵盤輸入 / 音樂輸出入 / 網路傳輸 單一部分卡住一個流程,所以多工是必要的。)
//C語言 吃角子老虎 (c)2010 finalfrank
#include <windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
int a,b,c;
DWORD WINAPI FirstThread(PVOID pvParam){
srand(time(NULL));
while(1) {
a=rand()%10;
b=rand()%10;
c=rand()%10;
printf("[%d][%d][%d]",a,b,c);
Sleep(100);
printf("\b\b\b\b\b\b\b\b\b");
}
return 0;
}
int main(){
DWORD dwThreadID;
while(true){
HANDLE hThread=CreateThread(NULL,0,FirstThread,NULL,0,&dwThreadID);
getch();
TerminateThread(hThread,INFINITE);
if(a==b&&b==c){
printf("\n恭喜中獎!\n");
}else{
printf("\n沒有中獎..\n");
}
system("pause");
system("cls");
CloseHandle(hThread);
}
留言列表