




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、隊列是一種特殊的線性表,隊列中所有的插入均限定在表的一端進(jìn)行,而所有的刪除則限定在表的另一端進(jìn)行。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。隊列的特點(diǎn)是先進(jìn)先出。下面在vc6環(huán)境中用純c語言編程風(fēng)格(主函數(shù)用 int main() )編寫小游戲貪吃蛇;蛇身增長數(shù)據(jù)用隊列數(shù)據(jù)結(jié)構(gòu)記錄。#include <windows.h>#include <stdio.h>#include <stdlib.h>#include <time.h>#define s_size 16#define s_len 300#define movet 1#define
2、moveb 2#define movel 3#define mover 4#define move_l_t 5#define move_l_b 6#define move_r_t 7#define move_r_b 8#define move_tb 9#define move_lr 10#define table_tx 80#define table_ty 80#define table_rx 560#define table_ry 400typedef struct snakeint x;int y;int m_state;int s_g;m_snake;typedef struct gam
3、esnakem_snake s_h;m_snake s_bns_len;m_snake s_bos_len;m_snake s_t;point s_h_h;int front;int rear;gamesnake;gamesnake *tmp;typedef struct foodint fx;int fy;int fs_g;int fk;food;food *ft;/-頭部數(shù)據(jù)列表-/向上數(shù)據(jù)point h_top11=4,1,2,3,2,12,3,14,3,16,13,16,13,14,14,12,14,3,12,1,4,1;point h_te15=4,3,4,5,6,5,6,3,4,3
4、;point h_te25=10,3,10,5,12,5,12,3,10,3;/向左數(shù)據(jù)point h_left11=1,4,1,12,3,14,12,14,14,13,16,13,16,3,14,3,12,2,3,2,1,4;point h_le15=3,4,3,6,5,6,5,4,3,4;point h_le25=3,10,3,12,5,12,5,10,3,10;/向右數(shù)據(jù)point h_right11=0,3,0,13,2,13,4,14,13,14,15,12,15,4,13,2,4,2,2,3,0,3;point h_re15=11,4,11,6,13,6,13,4,11,4;poi
5、nt h_re25=11,10,11,12,13,12,13,10,11,10;/向下數(shù)據(jù)point h_bottom11=3,0,3,2,2,4,2,13,4,15,12,15,14,13,14,4,13,2,13,0,3,0;point h_be15=4,11,4,13,6,13,6,11,4,11;point h_be25=10,11,10,13,12,13,12,11,10,11;/-身體數(shù)據(jù)列表-/上下數(shù)據(jù)point b_tb5=3,0,3,16,13,16,13,0,3,0;/左右數(shù)據(jù)point b_lr5=0,3,0,13,16,13,16,3,0,3;/左上數(shù)據(jù)point b_
6、lt8=3,8,3,16,13,16,13,13,16,13,16,3,8,3,3,8;/左下數(shù)據(jù)point b_lb8=3,0,3,8,8,13,16,13,16,3,13,3,13,0,3,0;/右上數(shù)據(jù)point b_rt8=0,3,0,13,3,13,3,16,13,16,13,8,8,3,0,3;/右下數(shù)據(jù)point b_rb8=0,3,0,13,8,13,13,8,13,0,3,0,3,3,0,3;/-尾部數(shù)據(jù)列表-/向上數(shù)據(jù)point t_top9=3,0,3,16,6,16,6,8,10,8,10,16,13,16,13,0,3,0;/向左數(shù)據(jù)point t_left9=0,3
7、,0,13,16,13,16,10,8,10,8,6,16,6,16,3,0,3;/向右數(shù)據(jù)point t_right9=0,3,0,6,8,6,8,10,0,10,0,13,16,13,16,3,0,3;/向下數(shù)據(jù)point t_bottom9=3,0,3,16,13,16,13,0,10,0,10,8,6,8,6,0,3,0;/-食物數(shù)據(jù)列表-/食用果數(shù)據(jù)point f_h9=4,6,4,10,6,12,10,12,12,10,12,6,10,4,6,4,4,6;/毒果數(shù)據(jù)point s_h9=5,7,5,9,7,12,9,12,11,9,11,7,9,4,7,4,5,7;hwnd hwn
8、d;static hfont mfont=createfont(-12,0,0,0,400,0,0,0,gb2312_charset,0,0,0,ff_modern,"宋體");lresult callback wndproc(hwnd hwnd, uint message,wparam wparam,lparam lparam)switch(message)case wm_destroy:postquitmessage(0);break;return defwindowproc(hwnd,message,wparam,lparam);hwnd initgraph(int
9、width,int height)hinstance hist=0;wndclass wc;wc.style=cs_hredraw|cs_vredraw;wc.lpfnwndproc=(wndproc)wndproc;wc.cbclsextra=0;wc.cbwndextra=0;wc.hinstance=hist;wc.hicon=loadicon(null,idi_winlogo);wc.hcursor=loadcursor(null,idc_arrow);wc.hbrbackground=(hbrush)(color_window+2);wc.lpszmenuname=null;wc.l
10、pszclassname="tm1"registerclass(&wc);hwnd=createwindow("tm1","貪吃蛇游戲(c語言數(shù)據(jù)描述隊列)",ws_overlappedwindow,0,0,width,height,hwnd_desktop,null,hist,null);showwindow(hwnd,1);updatewindow(hwnd);return hwnd;int getkeystate(int vk)if(getasynckeystate(vk)&0x8000)return true;
11、elsereturn false;void ploy(point pt,int ncount)hpen hp;hp=createpen(ps_solid,1,rgb(255,255,255);hdc hdc;hdc=getdc(hwnd);selectobject(hdc,hp);polyline(hdc,pt,ncount);deleteobject(hp);:deletedc(hdc);void drawploy(int x,int y,point p,int ncount)point tmp11;int i;for(i=0;i<ncount;i+)tmpi.x=pi.x+x;tmp
12、i.y=pi.y+y;ploy(tmp,ncount);void bar(int lx,int ty,int rx,int by)hbrush hb;hdc hdc;hdc=getdc(hwnd);hb=createsolidbrush(rgb(0,0,0);selectobject(hdc,hb);hpen hp;hp=createpen(ps_solid,1,rgb(255,255,255);selectobject(hdc,hp);rectangle(hdc,lx,ty,rx,by);deleteobject(hb);deleteobject(hp);:deletedc(hdc);voi
13、d setfont(int size,char *style)mfont=createfont(size,0,0,0,400,0,0,0,gb2312_charset,0,0,0,ff_modern,style);void outtextxy(int x,int y,char *string)hdc hdc;hdc=getdc(hwnd);selectobject(hdc,mfont);setbkmode(hdc,transparent);settextcolor(hdc,rgb(255,255,255);textout(hdc,x,y,string,strlen(string);:delet
14、edc(hdc);void initsnake(gamesnake *t)int sx,sy;sx=320;sy=240;t->rear=0;t->s_h.m_state=movet;t->s_h.x=sx;t->s_h.y=sy;t->s_h.s_g=movet;t->s_h_h.x=t->s_h.x;t->s_h_h.y=t->s_h.y;t->s_bnt->rear.m_state=movet;t->s_bnt->rear.x=sx;t->s_bnt->rear.y=sy+s_size;t->
15、s_bnt->rear.s_g=move_tb;t->s_t.m_state=movet;t->s_t.s_g=movet;t->s_t.x=sx;t->s_t.y=t->s_bnt->rear.y+s_size;t->s_bot->rear.m_state=movet;t->s_bot->rear.x=sx;t->s_bot->rear.y=sy+s_size;t->s_bot->rear.s_g=move_tb;void drawsnake(gamesnake *t)bar(table_tx-2,ta
16、ble_ty-2,table_rx+2,table_ry+2);switch(t->s_h.s_g)case movet:drawploy(t->s_h.x,t->s_h.y,h_top,11);drawploy(t->s_h.x,t->s_h.y,h_te1,5);drawploy(t->s_h.x,t->s_h.y,h_te2,5);break;case moveb:drawploy(t->s_h.x,t->s_h.y,h_bottom,11);drawploy(t->s_h.x,t->s_h.y,h_be1,5);draw
17、ploy(t->s_h.x,t->s_h.y,h_be2,5);break;case movel:drawploy(t->s_h.x,t->s_h.y,h_left,11);drawploy(t->s_h.x,t->s_h.y,h_le1,5);drawploy(t->s_h.x,t->s_h.y,h_le2,5);break;case mover:drawploy(t->s_h.x,t->s_h.y,h_right,11);drawploy(t->s_h.x,t->s_h.y,h_re1,5);drawploy(t-&g
18、t;s_h.x,t->s_h.y,h_re2,5);break;for(t->front=0;t->front<=t->rear;t->front+)switch(t->s_bnt->front.s_g)case move_l_t:drawploy(t->s_bnt->front.x,t->s_bnt->front.y,b_lt,8);break;case move_l_b:drawploy(t->s_bnt->front.x,t->s_bnt->front.y,b_lb,8);break;case
19、 move_r_t:drawploy(t->s_bnt->front.x,t->s_bnt->front.y,b_rt,8);break;case move_r_b:drawploy(t->s_bnt->front.x,t->s_bnt->front.y,b_rb,8);break;case move_tb:drawploy(t->s_bnt->front.x,t->s_bnt->front.y,b_tb,5);break;case move_lr:drawploy(t->s_bnt->front.x,t-&g
20、t;s_bnt->front.y,b_lr,5);break;switch(t->s_t.s_g)case movet:drawploy(t->s_t.x,t->s_t.y,t_top,9);break;case moveb:drawploy(t->s_t.x,t->s_t.y,t_bottom,9);break;case movel:drawploy(t->s_t.x,t->s_t.y,t_left,9);break;case mover:drawploy(t->s_t.x,t->s_t.y,t_right,9);break;voi
21、d move(int x,int y,int mstate,int s_g,gamesnake *t)t->s_bn0.x=x;t->s_bn0.y=y;t->s_bn0.m_state=mstate;t->s_bn0.s_g=s_g;for(t->front=1;t->front<=t->rear;t->front+)t->s_bnt->front.m_state=t->s_bot->front-1.m_state;t->s_bnt->front.s_g=t->s_bot->front-1.
22、s_g;t->s_bnt->front.x=t->s_bot->front-1.x;t->s_bnt->front.y=t->s_bot->front-1.y;t->s_t.m_state=t->s_bot->rear.m_state;t->s_t.x=t->s_bot->rear.x;t->s_t.y=t->s_bot->rear.y;t->s_t.s_g=t->s_t.m_state;for(t->front=0;t->front<=t->rear;t-
23、>front+)t->s_bot->front.m_state=t->s_bnt->front.m_state;t->s_bot->front.s_g=t->s_bnt->front.s_g;t->s_bot->front.x=t->s_bnt->front.x;t->s_bot->front.y=t->s_bnt->front.y;void movesnake(gamesnake *t)switch(t->s_h.m_state)case movet:if(t->s_h_h.y&
24、gt;table_ty) move(t->s_h.x,t->s_h.y,movet,9,t); t->s_h.y-=s_size; t->s_h_h.y=t->s_h.y;break;case moveb:if(t->s_h_h.y<table_ry) move(t->s_h.x,t->s_h.y,moveb,9,t); t->s_h.y+=s_size; t->s_h_h.y+=s_size;break;case movel:if(t->s_h_h.x>table_tx) move(t->s_h.x,t-&g
25、t;s_h.y,movel,10,t); t->s_h.x-=s_size; t->s_h_h.x-=s_size;break;case mover:if(t->s_h_h.x<table_rx) move(t->s_h.x,t->s_h.y,mover,10,t); t->s_h.x+=s_size; t->s_h_h.x+=s_size;break;drawsnake(t);void selectmove(gamesnake *t)if(t->s_h.m_state!=movel&&t->s_h.m_state!=
26、mover)if(getkeystate(vk_left)if(t->s_h.m_state=movet)move(t->s_h.x,t->s_h.y,movel,move_r_t,t);if(t->s_h.m_state=moveb)move(t->s_h.x,t->s_h.y,movel,move_r_b,t);t->s_h.m_state=movel;t->s_h.s_g=movel;t->s_h.x-=s_size;t->s_h_h.x-=s_size;t->s_h_h.y=t->s_h.y;if(getkeyst
27、ate(vk_right)if(t->s_h.m_state=movet)move(t->s_h.x,t->s_h.y,mover,move_l_t,t);if(t->s_h.m_state=moveb)move(t->s_h.x,t->s_h.y,mover,move_l_b,t);t->s_h.m_state=movel;t->s_h.m_state=mover;t->s_h.s_g=mover;t->s_h.x+=s_size;t->s_h_h.x=t->s_h.x+s_size;t->s_h_h.y=t-&g
28、t;s_h.y; if(t->s_h.m_state!=movet&&t->s_h.m_state!=moveb)if(getkeystate(vk_up)if(t->s_h.m_state=movel)move(t->s_h.x,t->s_h.y,movet,move_l_b,t);if(t->s_h.m_state=mover)move(t->s_h.x,t->s_h.y,movet,move_r_b,t);t->s_h.m_state=movet;t->s_h_h.y-=s_size;t->s_h.y-=s
29、_size;t->s_h_h.x=t->s_h.x;t->s_h.s_g=movet;if(getkeystate(vk_down)if(t->s_h.m_state=movel)move(t->s_h.x,t->s_h.y,moveb,move_l_t,t);if(t->s_h.m_state=mover)move(t->s_h.x,t->s_h.y,moveb,move_r_t,t);t->s_h.m_state=moveb;t->s_h.y+=s_size;t->s_h_h.x=t->s_h.x;t->s
30、_h.s_g=moveb;t->s_h_h.y=t->s_h.y+s_size;drawsnake(t);void setfood(gamesnake *t,food *f)int i,j,w,h,pos2030;time_t st;st=time(null);if(st%10=0)for(i=0;i<20;i+)for(j=0;j<30;j+)posij=0;w=(t->s_h.x-table_tx)/s_size;h=(t->s_h.y-table_ty)/s_size;poshw=1;w=(t->s_t.x-table_tx)/s_size;h=
31、(t->s_t.y-table_ty)/s_size;poshw=1;for(i=0;i<=t->rear;i+)w=(t->s_bni.x-table_tx)/s_size;h=(t->s_bni.y-table_ty)/s_size;poshw=1;srand(time(null);while(1)w=rand()%30;h=rand()%20;if(poshw=0)f->fk=1;f->fs_g=rand()%2;f->fx=w*s_size+table_tx;f->fy=h*s_size+table_ty;break;if(f-&g
32、t;fk)if(f->fs_g)drawploy(f->fx,f->fy,f_h,9);elsedrawploy(f->fx,f->fy,s_h,9);void add_s_bn(gamesnake *t)t->rear+;if(t->rear>s_len-1)setfont(-24,"宋體");outtextxy(150,220,"蛇太長!");elset->s_bnt->rear.m_state=t->s_t.m_state;t->s_bnt->rear.x=t->s
33、_t.x;t->s_bnt->rear.y=t->s_t.y;if(t->s_t.m_state=movet)t->s_bnt->rear.s_g=move_tb;t->s_t.y+=s_size;if(t->s_t.m_state=moveb)t->s_bnt->rear.s_g=move_tb;t->s_t.y-=s_size;if(t->s_t.m_state=movel)t->s_bnt->rear.s_g=move_lr;t->s_t.x+=s_size;if(t->s_t.m_state
34、=mover)t->s_bnt->rear.s_g=move_lr;t->s_t.x-=s_size;t->s_bot->rear.m_state=t->s_bnt->rear.m_state;t->s_bot->rear.s_g=t->s_bnt->rear.s_g;t->s_bot->rear.x=t->s_bnt->rear.x;t->s_bot->rear.y=t->s_bnt->rear.y;void outscore(gamesnake *t)char s100;spr
35、intf(s,"%d",t->rear*100);bar(250,30,350,60);setfont(-16,"宋體");outtextxy(260,35,s);void getfood(gamesnake *t,food *f)if(f->fk&&f->fs_g)if(t->s_h.x=f->fx&&t->s_h.y=f->fy)add_s_bn(t);outscore(t);f->fk=0;void delay(int val)int i,vk=0;while(1)vk
36、+;for(i=0;i<100000;i+); ;if(vk>val)break;int gameover(gamesnake *t,food *f)if(t->s_h_h.x=table_tx|t->s_h_h.x=table_rx)return true;if(t->s_h_h.y=table_ty|t->s_h_h.y=table_ry)return true;for(t->front=0;t->front<=t->rear;t->front+)if(t->s_h.m_state=movet)if(t->s_b
37、nt->front.x=t->s_h_h.x&&t->s_bnt->front.y+s_size=t->s_h_h.y)return true;if(t->s_t.x=t->s_h_h.x&&t->s_t.y+s_size=t->s_h_h.y)return true;if(f->fk&&f->fs_g=0)if(t->s_h_h.x=f->fx&&t->s_h_h.y=f->fy+s_size)return true;if(t->s_
38、h.m_state=movel)if(t->s_bnt->front.x+s_size=t->s_h_h.x&&t->s_bnt->front.y=t->s_h_h.y)return true;if(t->s_t.x+s_size=t->s_h_h.x&&t->s_t.y=t->s_h_h.y)return true;if(f->fk&&f->fs_g=0)if(t->s_h_h.x=f->fx+s_size&&t->s_h_h.y=f->fy)return true;if(t->s_h.m_state=moveb|t->s_h.m_state=mover)if(t->s_bnt->front.x=t->s_h_h.x&&t->s_bnt->front.y=t->s_h_h.y)return true;if(t->s_t.x=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 場平土石方施工方案
- TSIA 044-2024 軟件企業(yè)高質(zhì)量發(fā)展評估標(biāo)準(zhǔn)
- 經(jīng)濟(jì)責(zé)任審計報告
- 2025年度高校畢業(yè)生就業(yè)實(shí)習(xí)保障協(xié)議書
- 2025年度馬術(shù)俱樂部項(xiàng)目合作協(xié)議書-馬術(shù)俱樂部青少年馬術(shù)俱樂部合作約定
- 二零二五年度政府辦公樓無償租用合同書
- 大連市2025年度租賃房屋押金管理合同
- 二零二五年度智慧城市建設(shè)項(xiàng)目多人合伙股東協(xié)議書
- 二零二五年度木材銷售代理服務(wù)合同樣本
- 2025年度湖南省勞動合同電子檔案管理規(guī)范
- 勞務(wù)派遣投標(biāo)方案(交通協(xié)管員外包項(xiàng)目)(技術(shù)方案)
- 金庸人物課件
- 2024年普通高等學(xué)校招生全國統(tǒng)一考試·新課標(biāo)卷(化學(xué))附試卷分析
- 人教版五年級下冊數(shù)學(xué)第2單元測試題帶答案
- 再生資源門店加盟協(xié)議書
- DB62-T 3268-2024 人民防空工程平戰(zhàn)功能轉(zhuǎn)換技術(shù)標(biāo)準(zhǔn)
- 天車工技能競賽理論考試題庫500題(含答案)
- 療愈珠寶的科學(xué)與藝術(shù)
- 新能源汽車車位租賃合同
- 《人工智能導(dǎo)論》(第2版)高職全套教學(xué)課件
- 39 《出師表》對比閱讀-2024-2025中考語文文言文閱讀專項(xiàng)訓(xùn)練(含答案)
評論
0/150
提交評論