用個高階一點的編譯器,這樣出現的問題會少很多,結果很酷炫。
#include
#include
#define id_timer 1
#define strmaxlen 25 //乙個顯示列的最大長度
#define strminlen 8 //乙個顯示列的最小長度
lresult callback wndproc(hwnd, uint, wparam, lparam);
//////
//////
//////
//////
//////
//////
//////
//////
//////
//////
//////
//////
//////
//////
//////
//////
//////
//////
//////
//////
//////
//////
typedef struct tagcharchain //整個當作螢幕的乙個顯示列,這是個雙向列表
charchain, *pcharchain;
typedef struct tagcharcolumn
charcolumn, *pcharcolumn;
int winapi winmain(hinstance hinstance, hinstance hprevinstance,
pstr szcmdline, int icmdshow)
ws_dlgframe | ws_thickframe | ws_popup, // windows style
0, 0,
getsystemmetrics(sm_cxscreen), getsystemmetrics(sm_cyscreen),
null, null, hinstance,
null);
showwindow(hwnd, sw_showmaximized); //最大化顯示 show windows
updatewindow(hwnd);
showcursor(false); //隱藏滑鼠游標
srand((int)getcurrenttime()); //初始化隨機數發生器
while (getmessage(&msg, null, 0, 0))
showcursor(true); //顯示滑鼠游標
return msg.wparam;
}tchar randomchar() //隨機字元產生函式
int init(charcolumn *cc, int cyscreen, int x) //初始化
cc->current->prev = cc->point; //最後乙個節點
cc->current->ch = '\0';
cc->current->next = cc->head;
cc->head->prev = cc->current; //頭節點的前乙個為此鏈的最後乙個元素
cc->current = cc->point = cc->head; //free掉申請的記憶體要用current當引數
cc->head->ch = randomchar(); // 對鍊表頭的 元素填充
return0;}
lresult callback wndproc(hwnd hwnd, uint message, wparam wparam, lparam lparam)
return
0; case wm_timer:
hdc = getdc(hwnd);
patblt(hdcmem, 0, 0, cxscreen, cyscreen, blackness); //將記憶體裝置映像刷成黑色
for (i = 0; iistoptimes++ >(ccchain + i)->imuststoptimes;
//(ccchain + i)->point = (ccchain + i)->head; //point用於遍歷整個顯示列
//第乙個字元顯示為 白色
settextcolor(hdcmem, rgb(255, 255, 255));
textout(hdcmem, (ccchain + i)->x, (ccchain + i)->y, &((ccchain + i)->point->ch), 1);
j = (ccchain + i)->y;
(ccchain + i)->point = (ccchain + i)->point->next;
//遍歷整個顯示列,將這個顯示列裡的字元從下往上顯示
temp = 0; //temp綠色過度到黑色之用
while ((ccchain + i)->point != (ccchain + i)->head && (ccchain + i)->point->ch)
if (ctn)
(ccchain + i)->istoptimes = 0;
else
continue;
(ccchain + i)->y += ifontheight; //下次開始顯示的y座標 為當前的y座標加上 乙個字元的高度
//如果開始顯示的y座標減去 整個顯示列的長度超過了螢幕的高度
if ((ccchain + i)->y - (ccchain + i)->istrlen*ifontheight > cyscreen)
//鍊錶的頭 為此鍊錶的前個元素,因為下次開始顯示的時候 就相當與在整個顯示列的開頭新增個元素,然後在開始往上顯示
(ccchain + i)->head = (ccchain + i)->head->prev;
(ccchain + i)->head->ch = randomchar();
}bitblt(hdc, 0, 0, cxscreen, cyscreen, hdcmem, 0, 0, srccopy);
releasedc(hwnd, hdc);
return
0; case wm_rbuttondown:
killtimer(hwnd, id_timer);
return
0; case wm_rbuttonup:
settimer(hwnd, id_timer, 10, null);
return
0; //處理善後工作
case wm_keydown:
case wm_lbuttondown:
case wm_destroy:
killtimer(hwnd, id_timer);
deleteobject(hbitmap);
deletedc(hdcmem);
for (i = 0; icurrent);
}free(ccchain);
postquitmessage(0);
return
0; }
return defwindowproc(hwnd, message, wparam, lparam);
}
C語言之數字的孔數
problem description s得到乙個數,他想知道這個數每一位上的數字的孔數之和。1,2,3,5,7這幾個數字是沒有孔的,0,4,6,9都有乙個孔,8有兩個孔。input 輸入資料的第一行為乙個數t表示資料組數。接下來t行,每行輸入乙個正整數n 1 n 1000 表示要求數字孔數之和的數...
用C語言VC2010實現數字雨
include include include include char ch 320 20 這裡定義了120組字元,沒組數中有20個字元 int height 320 定義沒組數中的首個字元的高度 void initch 初始化字串 void show 列印字元雨 void randheight ...
c語言之猜數字的小遊戲
突然想起在剛學c語言的時候變想做出乙個可以玩耍的遊戲,但是當時都沒有了解圖形庫的概念,在網上閒逛便發現了有人做了乙個猜數字的遊戲,我當時也跟的寫了乙個,基本都差不多。想想也是好久以前的東西了,直接貼 把,大家多多指導。include include includeint num 4 paer num...