hox.jpg 
先來探討用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);
    }


arrow
arrow
    全站熱搜

    finalfrank 發表在 痞客邦 留言(1) 人氣()