欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c語(yǔ)言drop函數(shù) dropout函數(shù)

C語(yǔ)言問題!請(qǐng)進(jìn)!

#include "graphics.h"

彭澤網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站于2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。

#include "stdlib.h"

#include "stdio.h"

#include "fcntl.h"

#include "dos.h"

union REGS r;

struct MOUSE{

int getit;

int x1;

int y1;

int x2;

int y2;

}ms;

void MSB(float,float,float,float,int,int,int,int,int);

void mouse_drop(struct MOUSE *in);

/*定義鼠標(biāo)拖動(dòng)的函數(shù),通過鼠標(biāo)的按下、放開來選定一個(gè)矩形區(qū)域*/

int data_processor(struct MOUSE m,float *x0,float *x1,float *y0,float *y1);

/*將鼠標(biāo)選定的區(qū)域轉(zhuǎn)化成MSB集的區(qū)域*/

void mouse_IQR(int *num,int *bx,int *cx,int *dx)

{/*調(diào)用鼠標(biāo)的中斷,在這里定義函數(shù)讓下面一些函數(shù)調(diào)用,以減少編程的重復(fù),

在這里,通過int86函數(shù)(在dos.h里)調(diào)用中斷,鼠標(biāo)的中斷號(hào)為:33h */

r.x.ax=*num;

r.x.bx=*bx;

r.x.cx=*cx;

r.x.dx=*dx;

int86(0x33,r,r);

*bx=r.x.bx;

*cx=r.x.cx;

*dx=r.x.dx;

*num=r.x.ax;

}

int init_mouse()

{

/*初試化鼠標(biāo),查詢鼠標(biāo)驅(qū)動(dòng)有沒有安裝,功能號(hào)為 0 */

int num=0;

mouse_IQR(num,num,num,num);

if(num!=-1)

return 1;

else return 0;

}

void mouse_show();

void mouse_position(int *x,int *y)

{/*鼠標(biāo)在屏幕中所處的位置*/

int button=0,num=3;

mouse_show();

mouse_IQR(num,button,x,y);

}

void mouse_hide()

{/*隱藏鼠標(biāo)光標(biāo)*/

int num=2;

mouse_IQR(num,num,num,num);

}

void mouse_show()

{/*顯示鼠標(biāo)光標(biāo)*/

int num=1;

mouse_IQR(num,num,num,num);

}

int mouse_click(int k)

{/*查詢鼠標(biāo)是使用左鍵(返回1)還是右鍵(返回2)*/

int bx=0,num=3;

mouse_IQR(num,bx,num,num);

return(bxk);

}

void waiton(int buttom)

{/*等待鼠標(biāo)動(dòng)作*/

if(buttom==1)

while(mouse_click(1));

if(buttom==2)

while(mouse_click(2));

}

int mousexy(int x1,int y1,int x2,int y2)

{/*查詢鼠標(biāo)是否在區(qū)域內(nèi)*/

int x,y;

mouse_position(x,y);

if(xx1xy1yL||m-1e10) break;

x=xx;

y=yy;

}

color=n%16;

putpixel(x1+i,y1+j,color);

}

}

}

void mouse_drop(struct MOUSE *in)

{

char out[20];

int x,y;

int oldx,oldy;

struct MOUSE r;

r=*in;

setwritemode(1);

setlinestyle(USERBIT_LINE,0x7777,1);

setcolor(15);

if(r.getit==1)

{

mouse_hide();

rectangle(r.x1,r.y1,r.x2,r.y2);

mouse_show();

}

mouse_position(x,y);

r.x1=x;

r.y1=y;

oldx=x;

oldy=y;

r.getit=1;

mouse_hide();

rectangle(x,y,x,y);

mouse_show();

while(mouse_click(1)) {mouse_position(x,y);

if(oldx!=x || oldy!=y){

mouse_hide();

rectangle(r.x1,r.y1,x,y);

rectangle(r.x1,r.y1,oldx,oldy);

mouse_show();

oldx=x;

oldy=y;

}

if(mouse_click(2)){

r.getit=0;

mouse_hide();

rectangle(r.x1,r.y1,oldx,oldy);

mouse_show();

waiton(2);

break;}

}

if(r.getit==1){

r.x2=x;

r.y2=y;

if(x==r.x1 r.y1==y)

r.getit=0;

else

r.getit=1;

}

setlinestyle(SOLID_LINE,0,1);

*in=r;

waiton(1);

setwritemode(0);

setmouse(0,0,getmaxx(),getmaxy());

}

int data_processor(struct MOUSE m,float *x0,

float *x1,float *y0,float *y1)

{

float d1,l1,d2,l2,d,l;

float xx0,xx1,yy0,yy1,x,y;

d1=*x1-*x0;

l1=*y1-*y0;

d2=637;

l2=477;

xx0=m.x1;

xx1=m.x2;

yy0=m.y1;

yy1=m.y2;

if(xx0==xx1 || yy0==yy1) return(0);

if(xx0xx1)

{x=xx0;

xx0=xx1;

xx1=x;

}

if(yy0yy1)

{x=yy0;

yy0=yy1;

yy1=x;

}

d=1;

l=1;

x=*x0;

y=*y0;

*x0=x+(xx0-d)*d1/d2;

*x1=x+(xx1-d)*d1/d2;

*y0=y+(yy0-l)*l1/l2;

*y1=y+(yy1-l)*l1/l2;

if(*x0==*x1 || *y0==*y1)

return(0);

else

return(1);

}

不懂再問!

c語(yǔ)言的問題?。?!急求!!

幾個(gè)問題,需要注意:

1.

char?temp=fgetc(fp);

這個(gè)只對(duì)了一個(gè)字符,后面的char指針 ch, 指向的是一個(gè)字符,而不是一個(gè)字符串,因此不能比較;而且此時(shí)文件的位置指向的最尾處,字符temp;里面啥都沒有(或者說是一個(gè)結(jié)尾符)

2. 字符串的比較:

if(ch=="create?schema;")

有問題,除了上面說的此時(shí)ch的內(nèi)容肯定不會(huì)和create scheme;相同,c語(yǔ)言的字符比較一般是:

if(strcmp(ch,"create?schema;"))

因?yàn)樽址谋容^,長(zhǎng)度和結(jié)尾是一個(gè)大問題,因此為了安全甚至用strncmp

3. 其他一些問題, 文件讀取完畢后,應(yīng)該fclose;字符串比較的大小問題是否要考慮? 用戶輸入的保護(hù)(用戶不小心亂輸入過長(zhǎng)的字符串等。。)

4. 針對(duì)1~3, 簡(jiǎn)單的修改了一下,確保你的運(yùn)行,其余的自己酌情考慮吧。。。

#include?string.h

...

void?choose()

{

FILE?*?fp;

fp=fopen("creat_schema.txt","r+");

int?i=0;

char?c;

do

{

c=getchar();

putc(c,fp);

}

while?(c!=';');

rewind(fp);

/*

char?temp=fgetc(fp);

char?*?ch=temp;

*/

char?temp[100];

fgets(temp,?100,?fp);

char?*ch?=?temp;

fclose(fp);

/*

if(ch=="create?schema;")?????create_schema();

else?if(ch=="create?table;")?????create_table();

else?if(ch=="drop?schema;")????drop_schema();

else?if(ch=="drop?table;")????drop_table();

else?if(ch=="alter?table;")????alter_table();

*/

if(strcmp(ch,"create?schema;"))?????create_schema();

else?if(strcmp(ch,"create?table;"))?????create_table();

else?if(strcmp(ch,"drop?schema;"))????drop_schema();

else?if(strcmp(ch,"drop?table;"))????drop_table();

else?if(strcmp(ch,"alter?table;"))????alter_table();

else

{

printf("ch?=?%s\n",?ch);

printf("error!\n");

exit(0);

}????

}

c語(yǔ)言編程題

#include?stdio.h

/*?入?yún)⒁唬盒枰鎏幚淼娜执?

*?入?yún)⒍盒枰獎(jiǎng)h除的字串

*?返回值:經(jīng)過處理后的字串?

*?要求是指針處理?如果可以使用strlen和memcpy等會(huì)更容易理解

*/

char?*myf_delsubstr(char?*str_all,?char?*str_drop)

{?

char?*all?=?str_all;???//臨時(shí)指針?指向全字串

char?*drop?=?str_drop;?//臨時(shí)指針?指向待刪除字串

char?*tmp?=?NULL;??????//臨時(shí)指針?后面處理字串時(shí)使用

static?char?out[1024]?=?{0};?//靜態(tài)字串?作為返回值

char?*u?=?out;?????????//臨時(shí)指針?指向返回的字串

int?drop_len?=?0;??????//待刪除字串的長(zhǎng)度

//獲取待刪除字串的長(zhǎng)度

while?('\0'?!=?*drop)

{

drop++;

drop_len++;

}

//在獲取長(zhǎng)度時(shí)drop這個(gè)指針的指向已被改變?重新賦值

drop?=?str_drop;

/*?雙層嵌套循環(huán)

*?第一層循環(huán)遍歷全字串直到找到可能存在待刪除的字串停止

*?第二層循環(huán)遍歷待刪除字串?并與當(dāng)前的全字串對(duì)比?一旦發(fā)現(xiàn)完整匹配?越過(刪除)該字串

*/

while?('\0'?!=?*all)//直到全字串結(jié)尾

{

if?(*all?==?*drop)//發(fā)現(xiàn)第一個(gè)和待刪除字串的第一個(gè)字符相等?準(zhǔn)備進(jìn)入二層循環(huán)排除或證明懷疑

{

tmp?=?all;//臨時(shí)指針指向當(dāng)前匹配的字串的首部

while?('\0'?!=?*drop)//直到待刪除字段結(jié)尾

{

tmp++;//每次循環(huán)臨時(shí)全字串和drop字串要往后偏移一位

drop++;//每次循環(huán)臨時(shí)全字串和drop字串要往后偏移一位

if?(*tmp?!=?*drop)//一旦發(fā)現(xiàn)其中一個(gè)字符不相等?排除懷疑

{

break;

}

}

if?('\0'?!=?*drop)//如果還未檢查到字串尾就出來了肯定是排除了懷疑

{

*u?=?*all;//既然排除懷疑那就把當(dāng)前字符賦值到帶返回的字串out中

u++;//賦值后要往后偏移

drop?=?str_drop;

}

else//證實(shí)了懷疑

{

all?+=?drop_len;//全字串越過待刪除的字段長(zhǎng)度

drop?=?str_drop;//指針的指向已被改變?重新賦值

continue;//全字串中可能不止出現(xiàn)一次待刪除的字串?繼續(xù)全字串的檢查

}

}

else

{

*u?=?*all;//既然不是待刪除字符那就把當(dāng)前字符賦值到帶返回的字串out中

u++;//賦值后要往后偏移

}

all++;//既然是循環(huán)整個(gè)全字串檢查?檢查完一個(gè)字符后指針要往后偏移一位

}

return?out;//u只是指向out這個(gè)字串的臨時(shí)指針?我們返回的還是out本體

}

int?main(int?argc,?char?*argv[])

{

char?aa[1024]?=?{0};

char?bb[512]?=?{0};

printf("輸入一個(gè)字串:\n");

scanf("%s",?aa);

printf("輸入需要?jiǎng)h除的字串:\n");

scanf("%s",?bb);

char?*kk?=?myf_delsubstr(aa,?bb);

printf("處理后的字串:\n%s\n",?kk);

return?0;

}

輸入一個(gè)字串:

我覺得你是不可能愛上我的因?yàn)槲沂且粋€(gè)男孩子

輸入需要?jiǎng)h除的字串:

處理后的字串:

覺得你是不可能愛上的因?yàn)槭且粋€(gè)男孩子

求c語(yǔ)言做的俄羅斯方塊,只要能運(yùn)行成功,就給分。

C語(yǔ)言實(shí)例教程:俄羅斯方塊的編寫

/*

先寫原理:

本次的俄羅斯方塊代碼出其的簡(jiǎn)單,比我去年寫的四十幾K要小得多

實(shí)際上核心代碼只有3-4K,而且很容易理解,適合有一點(diǎn)C語(yǔ)言基礎(chǔ)并對(duì)此

有興趣的人.

這前面只粗略講解核心算法:

這里把游戲的關(guān)鍵設(shè)計(jì)放在三個(gè)盒子和一個(gè)坐標(biāo)上:

大盒子:一個(gè)兩維數(shù)組,記錄著方塊點(diǎn)陣的開與關(guān)(把游戲的舞臺(tái)想像

成一個(gè)點(diǎn)陣),在下面也把這個(gè)東西稱為地圖

兩個(gè)5*5小盒子:兩維數(shù)組,一個(gè)盛放著正在下落的方塊,一個(gè)盛放在

下一個(gè)下落的方塊(即next),當(dāng)然這兩個(gè)也必須想像成一個(gè)點(diǎn)陣:如長(zhǎng)條

的點(diǎn)陣為:

00000

00100

00100

00100

00100

現(xiàn)在你只要有這么一個(gè)概念:一個(gè)不斷定時(shí)下落的小盒子從大盒子頂

部下降到底部,之后再將next盒子放在下落盒子,再進(jìn)行下一輪的下落...

中間的控制等尚不要太著急.

現(xiàn)在面臨著一個(gè)問題:

下落的盒子和地圖之間要怎么聯(lián)系起來?

一個(gè)好的方法是再定義一個(gè)坐標(biāo):x,y,保存著小盒子左上角在地圖上對(duì)應(yīng)

的下標(biāo)(位置),即當(dāng)x = 0, y = 0時(shí),小盒子處于地圖的左上部.如此,當(dāng)

小盒子需要移動(dòng)時(shí),即只須要改變x,y的值.

現(xiàn)在說說旋轉(zhuǎn).

小盒子保存著當(dāng)前下落形狀的點(diǎn)陣,那么旋轉(zhuǎn)就只須要將這個(gè)點(diǎn)陣旋

轉(zhuǎn)90度:例如:

00000 00000

00100 00000

00100 - 01111

00100 00000

00100 00000

這一點(diǎn)實(shí)現(xiàn)起來還是不太難的.

判斷碰撞

通常這種情況只須要在有移動(dòng)小盒或旋轉(zhuǎn)盒子時(shí)發(fā)生:也即點(diǎn)陣非空

是互斥的,當(dāng)小盒要向下移(x++)時(shí),如果小盒里的點(diǎn)陣與地圖上的點(diǎn)陣(非

空的地方)重疊,則不能下移,(卡住了),旋轉(zhuǎn)則轉(zhuǎn)換后的形狀與地圖有沖

突則要放棄旋轉(zhuǎn).

到了這里,你應(yīng)該有一個(gè)大概的了解了,至于怎樣在屏幕上畫出來,這

個(gè)是比較簡(jiǎn)單的,下面的代碼會(huì)慢慢與你解釋.

*/

/*

平臺(tái):DOS+TC2.0

*/

#include stdio.h

#include stdlib.h

#include bios.h /*這里須要讀取系統(tǒng)運(yùn)行時(shí)間來作為定時(shí)器*/

#include graphics.h /*很不幸,TC2的簡(jiǎn)單圖形,讓我放棄了用*/

#include conio.h /*win32+openGL來講解.*/

#define MAX_X 14 /*可見最大X*/

#define MAX_Y 21 /*可見最大Y*/

/*我們定義了最大的可見X和Y,那么即還有不

可見的部分,事實(shí)上地圖(大盒子)里的左右

兩側(cè)和底部各兩行都被1填充,這樣大大簡(jiǎn)化

出界的判斷,事實(shí)上,在本例中沒有這樣的

代碼,因?yàn)榕赃呌幸蝗?阻止小盒子越出大

盒子的按制范圍

*/

#define MAX_C 7 /*最大種類,這個(gè)無須解釋*/

#define KEY_UP 'w' /*定義上下左右按按鍵*/

#define KEY_DOWN 's'

#define KEY_LEFT 'a'

#define KEY_RIGHT 'd'

#define KEY_ESC 27 /*退出*/

typedef int BOOL;

#define FALSE 0

#define TRUE 1 /*這幾個(gè)TC中沒有...自己定義一下吧:)*/

/*時(shí)鐘結(jié)構(gòu)*/

typedef struct { /*時(shí)鐘結(jié)構(gòu)*/

BOOL enabled; /*時(shí)鐘是否開啟*/

unsigned int intervel; /*定時(shí)間隔*/

unsigned int lasttime; /*這個(gè)屬于內(nèi)部使用變量*/

} Timer;

/*

*現(xiàn)在進(jìn)入了編程的初質(zhì)階段

*在開始處我會(huì)寫出所有的函數(shù)原形,以及它們的作用

*main函數(shù)在程序的最后,你可以在這里看到整個(gè)游戲的組織架構(gòu)

*很好,它只有幾十行,并且非常容易理解,當(dāng)然,還是先看一下函數(shù)原形

*及解釋

*/

/******************************************************\

* 函數(shù)原形及說明 *

\******************************************************/

/*以下三個(gè)函數(shù)可以參照Timer結(jié)構(gòu)體.在函數(shù)聲明后面*/

int GetTickCount(); /*返回電腦或操作系統(tǒng)運(yùn)行逝去的時(shí)間*/

/*在win32環(huán)境下已包含在windows.h里邊,返回的是4byte*/

/*在DOS(本代碼)環(huán)境下,要自己編寫,使用到BIOS.h內(nèi)容*/

int setTimer(Timer *t, unsigned int intv, BOOL en);

/*設(shè)置時(shí)鐘t,參數(shù)分別為時(shí)鐘指針,時(shí)間間隔,是否活動(dòng)*/

/*時(shí)間間隔,win32下為毫秒,DOS下為1/18秒(有點(diǎn)低)*/

BOOL testTimer(Timer *t); /*測(cè)試時(shí)鐘t是否到達(dá)定時(shí)時(shí)間*/

/*如下面這段代碼:*/

/*

setTimer(t, 1, 1); 設(shè)置1個(gè)單位的間隔

while(1) {

if(testTimer(t)) printf("Active!\n");

}

將會(huì)定時(shí)(1個(gè)單位)在屏幕上打印Active!

一般來說testTimer必須放在循環(huán)中反復(fù)執(zhí)行,激活時(shí)返回1

*/

void render(void); /*唯一的繪圖函數(shù)*/

/*注意,此函數(shù)重畫整個(gè)地圖,根據(jù)地圖中的點(diǎn)陣,以及根據(jù)

小盒在地圖的中坐標(biāo)在恰當(dāng)位置畫出小盒子*/

/*DOS的圖形當(dāng)然是很低的,但,全屏繪圖在這里還是過得去

的,我用的是雙緩沖,交換繪圖,這樣感覺好點(diǎn)*/

void initMap(void); /*初始化地圖(大盒子)*/

/*之前提到過在這個(gè)兩維數(shù)組中有一圈為1的東西來阻止

小盒子出界,這就是生成這一圈的函數(shù)*/

void newGame(); /*新建一個(gè)游戲*/

/*這個(gè)函數(shù)初始化一幾個(gè)時(shí)鐘和建造第一個(gè)下落的小盒子*/

/*當(dāng)然建造完后要生成一個(gè)個(gè)的預(yù)覽*/

void rotateBox(int box1[5][5], int box2[5][5]);

/*核心函數(shù)成員,把box1逆時(shí)針旋轉(zhuǎn)90度,并保存到box2中*/

void rebuidNext();

/*核心函數(shù)成員,生成下一個(gè)方塊*/

int drop();

/*核心函數(shù)成員,將下落的盒子向下移(實(shí)際上增加下落盒

子的Y值而已,當(dāng)然要判斷是否與地圖點(diǎn)陣重疊*/

/*與地圖重疊,無法完成下落操作,返回0*/

void putBox();

/*在這之上,下落的盒子與地圖之前是獨(dú)立的兩個(gè)兩維數(shù)*/

/*當(dāng)下落失敗后,小盒子要回到頂端再次重新執(zhí)行下落,這*/

/*時(shí)原來的盒子內(nèi)容當(dāng)然就要變成地圖上的內(nèi)容了,putBox

就是將下落盒子的內(nèi)容根據(jù)XY寫到地圖上*/

void clear();

/*這個(gè)函數(shù)在下落失敗并putBox后執(zhí)行,掃描整個(gè)地圖*/

/*清除掉滿行的點(diǎn)陣,具體細(xì)節(jié)在函數(shù)內(nèi)講*/

int move(int dir);

/*左右移動(dòng)下落盒子,dir指出向左還是向右,這個(gè)與drop

是一樣的*/

int test(int mx, int my, int box[5][5]);

/*這個(gè)比較重點(diǎn),判斷box在mx,my為坐標(biāo)上,與地圖上的

非空點(diǎn)陣是否有重疊.很通用的一個(gè)函數(shù)*/

int rotate();

/*旋轉(zhuǎn)下落的盒子,當(dāng)然如果轉(zhuǎn)了之后與地圖有沖突,會(huì)

取消轉(zhuǎn)動(dòng),返回0,但返回的值好像沒什么用~*/

int newfall();

/*創(chuàng)建下落元素,把"下一個(gè)"預(yù)覽的內(nèi)容復(fù)制到下落盒子*/

/*并將下落的盒子移動(dòng)到地圖頂部,當(dāng)然這個(gè)過程,如果頂

部有沖突,會(huì)返回0,這時(shí)說明已經(jīng)滿了...gameOver*/

int main();

/*終于到了最后的主函數(shù),在這里可以看到整個(gè)游戲的架*/

/*構(gòu),包括游戲主循環(huán),鍵盤處理等...*/

/******************************************************\

* 變量區(qū) *

\******************************************************/

/*在上面的說明中,可能會(huì)有一些蒙,因?yàn)榭赡軐?duì)所用到的實(shí)際變量沒

*有了解

*/

int map[MAX_Y+4][MAX_X+4]; /*地圖\大盒子...MAX_X,Y是可見面積*/

/*我已說過需要在外面布兩圈"衛(wèi)兵"*/

int curbox[5][5]; /*當(dāng)前下落的盒子*/

int curx, cury; /*保存著當(dāng)前活動(dòng)盒子在地圖上的位置*/

int nextbox[5][5]; /*保存著下一個(gè)形狀的盒子*/

/*以上就是這么幾個(gè)盒子和坐標(biāo)了*/

/*這里列出了標(biāo)準(zhǔn)七種俄羅斯方塊圖形點(diǎn)陣,用到時(shí)它們會(huì)被復(fù)制到相*/

/*應(yīng)的盒子...:)*/

int box[MAX_C][5][5] = { /*MAX_C(7)種預(yù)定義的盒子*/

{

{0,0,0,0,0},

{0,0,0,0,0},

{1,1,1,1,0},

{0,0,0,0,0},

{0,0,0,0,0}

},

{

{0,0,0,0,0},

{0,0,1,0,0},

{0,1,1,1,0},

{0,0,0,0,0},

{0,0,0,0,0}

},

{

{0,0,0,0,0},

{0,1,1,0,0},

{0,0,1,1,0},

{0,0,0,0,0},

{0,0,0,0,0}

},

{

{0,0,0,0,0},

{0,0,1,1,0},

{0,1,1,0,0},

{0,0,0,0,0},

{0,0,0,0,0}

},

{

{0,0,0,0,0},

{0,1,1,0,0},

{0,0,1,0,0},

{0,0,1,0,0},

{0,0,0,0,0}

},

{

{0,0,0,0,0},

{0,0,1,1,0},

{0,0,1,0,0},

{0,0,1,0,0},

{0,0,0,0,0}

},

{

{0,0,0,0,0},

{0,0,1,1,0},

{0,0,1,1,0},

{0,0,0,0,0},

{0,0,0,0,0}

}

};

/******************************************************\

* 時(shí)鐘 *

\******************************************************/

/*時(shí)鐘部分也非常理解的,一個(gè)用到設(shè)置時(shí)鐘,一個(gè)用來測(cè)試時(shí)鐘激活態(tài)*/

Timer tDown; /*正常下落定時(shí)時(shí)鐘intervel會(huì)比較大*/

Timer tFast; /*按KEY_DOWN時(shí)使用的快速下落*/

int speed = 13; /*控制下落時(shí)間間隔*/

#define FAST_INTV 1 /*快時(shí)鐘的間隔*/

int GetTickCount() { /*讀取BIOS時(shí)鐘*/

int ret;

ret = peek(0x0,0x46e); /*實(shí)際上讀取了內(nèi)存0:046e處的內(nèi)容*/

ret = 8; /*這個(gè)地方是$%#$^$%^*/

ret += peek(0x0,0x46c); /*太多新的東西了,找點(diǎn)書看一看吧*/

return (ret);

}

int setTimer(Timer *t, unsigned int intv, BOOL en) {

t - enabled = en; /*設(shè)置一個(gè)時(shí)鐘羅*/

t - intervel = intv;

t - lasttime = GetTickCount(); /*lasttime記錄的是上一個(gè)*/

/*tickcount返回的東西*/

/*這樣當(dāng)再一次測(cè)試時(shí)間時(shí)新的tickcount產(chǎn)生了

它來減去上一次的tickcount就得出了一個(gè)時(shí)間

間隔,這個(gè)就可以和intervel比較從而得出是否

激活了

*/

return 0;

}

BOOL testTimer(Timer *t) { /*在上面6行的地方解釋了:)*/

unsigned int tmp, dt;

if (!(t - enabled)) return FALSE;

tmp = GetTickCount();

dt = tmp - (t - lasttime);

if(dt = t - intervel) {

t - lasttime = tmp;

return TRUE;

}

return FALSE;

}

/******************************************************\

* 渲染部分 *

\******************************************************/

/*提供render更新整個(gè)屏幕*/

/*關(guān)于這個(gè)函數(shù),要說的東西還是比較多,為了追求漂亮和編譯*/

/*時(shí)的靈活性,這個(gè)函數(shù)被寫得頗為冗長(zhǎng)...*/

/*現(xiàn)在寫一下本游戲圖形的東西...使用TC2的Graphics我也不

太樂意,畢竟它本身已過時(shí),但鑒于實(shí)在簡(jiǎn)單實(shí)用,它用來教學(xué)

再合適不過,這也是教學(xué)總是用TC的原因,老師們不喜歡讓學(xué)

生問一些讓他們掌握起來也困難的東西...*/

/*這里我使用了VGAMED模式,而不是 VGAHI,因?yàn)閂GAMED有兩個(gè)

頁(yè)(可以想像成緩沖),這樣可以用來做到不閃動(dòng)畫.即:在后臺(tái)

頁(yè)繪制圖形,完成后再顯示出來.

這里用到了兩個(gè)函數(shù):

setactivepage(1 | 0) 參數(shù)只能是1或0,選擇繪圖頁(yè),例如選

擇了1后,以后所有的繪圖動(dòng)作將畫到頁(yè)1上.

setvisualpage(1 | 0) 這個(gè)叫做選擇可見頁(yè),即選擇在屏幕上

顯示頁(yè)面1還是0

*/

void render(void) {

int x, y;

static int cPage = 0; /*當(dāng)前頁(yè),換頁(yè)用*/

#define STARTX 50 /*定義幾個(gè)常量*/

#define STARTY 0

#define LEN 18

setactivepage(cPage=(cPage == 0?1:0)); /*選擇頁(yè)*/

cleardevice(); /*清屏*/

setcolor(15);

rectangle( STARTX + LEN * 2 - 2,

STARTY + LEN * 3 - 2,

STARTX + LEN * (MAX_X - 2) + 2,

STARTY + LEN * (MAX_Y - 2) + 2);

/*用白色畫一個(gè)外框*/

setfillstyle(SOLID_FILL, 5);

for(y = 3; y MAX_Y - 2; y++) { /*畫地圖 */

for(x = 2; x MAX_X - 2; x++) {

if(map[y][x]) {

rectangle( x * LEN + STARTX,

y * LEN + STARTY,

x * LEN + STARTX + LEN,

y * LEN + STARTY + LEN);

bar( x * LEN + STARTX + 1,

y * LEN + STARTY + 1,

x * LEN + STARTX + LEN - 2,

y * LEN + STARTY + LEN - 2);

}

}

}

/*繪圖操作就不要作太復(fù)雜的介紹了,這只寫作用*/

/*以上段,根據(jù)地圖上的點(diǎn)陣情況將地圖反映到屏幕上*/

當(dāng)前題目:c語(yǔ)言drop函數(shù) dropout函數(shù)
本文地址:http://chinadenli.net/article4/dodcooe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、企業(yè)建站、建站公司、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)