隊列數(shù)據(jù)結(jié)構(gòu)C語言_第1頁
隊列數(shù)據(jù)結(jié)構(gòu)C語言_第2頁
隊列數(shù)據(jù)結(jié)構(gòu)C語言_第3頁
隊列數(shù)據(jù)結(jié)構(gòu)C語言_第4頁
隊列數(shù)據(jù)結(jié)構(gòu)C語言_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論