1、俄罗斯方块和贪吃蛇的C语言源程序俄罗斯方块和贪吃蛇的C语言源程序刚刚在群里听某些人说发上来可以拿奖金,于是我就发了脸皮比较厚,大家见笑了虽然写的没有网上现成的那些好,但是这些100%是自己写的,因为是写着玩的,所以就没有优化,也没有用什么复杂的技术,但是这样的程序反而更容易看懂编译环境是古老的turboc2.0,喜欢dos编程的朋友可以拿来消遣一下。嘿嘿嘿嘿附件是源文件和编译好的文件俄罗斯方块-#include graphics.h#include stdio.h#include stdlib.h#include string.h#include bios.h#include time.h#i
2、nclude stdlib.h#include dos.h#define VK_ESC 0x11b#define VK_UP 0x4800#define VK_DOWN 0x5000#define VK_LEFT 0x4b00#define VK_RIGHT 0x4d00#define TIMER 0x1c#define SEC(N) N*18.8typedef box44;FILE *fp;int space2618;box bar12,bar21,bar34,bar42,bar52,bar64,bar74;float count;int nexttype,nextvalue;int ove
3、red;int score,higher;char scoretext50,highscore50;structint i;int j;box *t;int v; cur_bar;void SetScreen();void SetValue();void Draw();void SetBox();void DrawBack();void DrawBox();void CreateBar(int i,int j,box *type,int value);void SetTimer(void interrupt (*theProc)();void KillTimer();void interrup
4、t Proc();void interrupt (*oldtimer)();void OneStep();int IsFall();void CheckState();void ClearLine(int Line);void MoveLeft();void MoveRight();void ChangeBar();void ShowScore();void ShowNextWindow();void ReadHigh();void WriteHigh();int main()int key;count=0;overed=0;score=0;ReadHigh();randomize();old
5、timer=getvect(TIMER);SetBox();SetScreen();DrawBack();Draw();CreateBar(0,5,bar3,2);nexttype=random(7)+1;nextvalue=0;ShowNextWindow();SetTimer(Proc);setcolor(BLUE);outtextxy(520,60,YOUR SCORE);outtextxy(520,80,0);outtextxy(520,100,HIGH SCORE);outtextxy(520,120,highscore);while(1) if(countSEC(0.5) coun
6、t=0; OneStep(); if(bioskey(1) key=bioskey(0); if(key=VK_ESC) break; if(!overed) switch(key) case VK_LEFT: MoveLeft(); break; case VK_RIGHT: MoveRight(); break; case VK_UP: ChangeBar(); break; case VK_DOWN: OneStep(); CheckState(); break; else break; closegraph();KillTimer();if(scorehigher)higher=sco
7、re;WriteHigh();return 0;void SetScreen()int GraphDriver=DETECT;int GraphMode=VGAHI;initgraph(&GraphDriver,&GraphMode,);setbkcolor(LIGHTMAGENTA);void SetValue()int i,j;for(i=0;i24;i+) for(j=0;j16;j+) spacej=0;void Draw()int i,j;setfillstyle(SOLID_FILL,LIGHTBLUE);setcolor(BLACK);for(i=0;i24;i+) for(j=
8、0;j16;j+) if(spacej) bar(160+j*20,i*20,160+j*20+20,i*20+20); rectangle(160+j*20,i*20,160+j*20+20,i*20+20); void SetBox()int i,j,k;for(i=0;i2;i+) for(j=0;j4;j+) for(k=0;k4;k+) bar1jk=0;bar1001=1;bar1011=1;bar1021=1;bar1031=1;bar1120=1;bar1121=1;bar1122=1;bar1123=1;for(i=0;i1;i+) for(j=0;j4;j+) for(k=
9、0;k4;k+) bar2jk=0;bar2011=1;bar2012=1;bar2021=1;bar2022=1;for(i=0;i4;i+) for(j=0;j4;j+) for(k=0;k4;k+) bar3jk=0;bar3011=1;bar3020=1;bar3021=1;bar3031=1;bar3111=1;bar3120=1;bar3121=1;bar3122=1;bar3211=1;bar3221=1;bar3222=1;bar3231=1;bar3320=1;bar3321=1;bar3322=1;bar3331=1;for(i=0;i2;i+) for(j=0;j4;j+
10、) for(k=0;k4;k+) bar4jk=0;bar4012=1;bar4021=1;bar4022=1;bar4031=1;bar4121=1;bar4122=1;bar4132=1;bar4133=1;for(i=0;i2;i+) for(j=0;j4;j+) for(k=0;k4;k+) bar5jk=0;bar5011=1;bar5021=1;bar5022=1;bar5032=1;bar5131=1;bar5122=1;bar5123=1;bar5132=1;for(i=0;i4;i+) for(j=0;j4;j+) for(k=0;k4;k+) bar6jk=0;bar601
11、1=1;bar6012=1;bar6022=1;bar6032=1;bar6121=1;bar6122=1;bar6123=1;bar6131=1;bar6211=1;bar6221=1;bar6231=1;bar6232=1;bar6330=1;bar6331=1;bar6332=1;bar6322=1;for(i=0;i4;i+) for(j=0;j4;j+) for(k=0;k4;k+) bar7jk=0;bar7011=1;bar7012=1;bar7021=1;bar7031=1;bar7121=1;bar7131=1;bar7132=1;bar7133=1;bar7212=1;ba
12、r7222=1;bar7232=1;bar7231=1;bar7320=1;bar7321=1;bar7322=1;bar7332=1;void CreateBar(int i,int j,box *type,int value)while(bioskey(1)bioskey(0);cur_bar.i=i;cur_bar.j=j;cur_bar.t=type;cur_bar.v=value;DrawBox();void DrawBox()int i,j;setfillstyle(SOLID_FILL,LIGHTBLUE);setcolor(BLACK);for(i=0;i4;i+) for(j
13、=0;j4;j+) if( (cur_bar.t)cur_bar.vj) bar(160+(cur_bar.j*20)+j*20,(cur_bar.i*20)+i*20,160+(cur_bar.j*20)+j*20+20,(cur_bar.i*20)+i*20+20); rectangle (160+ (cur_bar.j*20) +j*20,(cur_bar.i*20) +i*20,160+ (cur_bar.j*20) + j*20+20,(cur_bar.i*20) +i*20+20); setfillstyle(SOLID_FILL,YELLOW);for(i=1;i4;i+) fo
14、r(j=0;j0) & (!(cur_bar.t)cur_bar.vi-1j) & (!spacecur_bar.i+i-1cur_bar.j+j) if(j+cur_bar.j15)setfillstyle(SOLID_FILL,LIGHTMAGENTA); bar(160+(cur_bar.j*20)+j*20,(cur_bar.i*20)+(i-1)*20,160+(cur_bar.j*20)+j*20+20,(cur_bar.i*20)+(i-1)*20+20); rectangle(160+(cur_bar.j*20)+j*20,(cur_bar.i*20)+(i-1)*20,160
15、+(cur_bar.j*20)+j*20+20,(cur_bar.i*20)+(i-1)*20+20); if(j+cur_bar.j15)setfillstyle(SOLID_FILL,YELLOW); i=0;for(j=0;j0) & (!spacecur_bar.i+i-1cur_bar.j+j) if(j+cur_bar.j15)setfillstyle(SOLID_FILL,LIGHTMAGENTA); bar(160+(cur_bar.j*20)+j*20,(cur_bar.i*20)+(i-1)*20,160+(cur_bar.j*20)+j*20+20,(cur_bar.i*
16、20)+(i-1)*20+20); rectangle(160+(cur_bar.j*20)+j*20,(cur_bar.i*20)+(i-1)*20,160+(cur_bar.j*20)+j*20+20,(cur_bar.i*20)+(i-1)*20+20); if(j+cur_bar.j15)setfillstyle(SOLID_FILL,YELLOW); void SetTimer(void interrupt (*theProc)()disable();setvect(TIMER,theProc);enable();void KillTimer()disable();setvect(T
17、IMER,oldtimer);enable();void interrupt Proc()count+;oldtimer();void OneStep()int i,j;cur_bar.i+;Draw();DrawBox();CheckState();if(IsFall() for(i=0;i4;i+) for(j=0;j4;j+) spacecur_bar.i+icur_bar.j+j=cur_bar.tcur_bar.vj | spacecur_bar.i+icur_bar.j+j; switch(nexttype) case 1: CreateBar(0,7,bar1,nextvalue
18、); break; case 2: CreateBar(0,7,bar2,nextvalue); break; case 3: CreateBar(0,7,bar3,nextvalue); break; case 4: CreateBar(0,7,bar4,nextvalue); break; case 5: CreateBar(0,7,bar5,nextvalue); break; case 6: CreateBar(0,7,bar6,nextvalue); break; case 7: CreateBar(0,7,bar7,nextvalue); break; nexttype=rando
19、m(7)+1; switch(nexttype) case 1: nextvalue=random(2); break; case 2: nextvalue=random(1); break; case 3: nextvalue=random(4); break; case 4: nextvalue=random(2); break; case 5: nextvalue=random(2); break; case 6: nextvalue=random(4); break; case 7: nextvalue=random(4); break; ShowNextWindow();int Is
20、Fall()int res=0;int i,j;for(i=0;i4;i+) for(j=0;j22) ) res=1; return res;void ClearLine(int Line)int i,j,col;i=0;col=0;while(1) if(countSEC(0.2) count=0; col=!col; if(col=1)setcolor(RED); else setcolor(GREEN); rectangle(160,Line*20,480,Line*20+20); i+; if(i6)break;for(i=Line;i0;i-) for(j=0;j16;j+) sp
21、acej=spacei-1j;DrawBack();Draw();DrawBox();score+=100;ShowScore();while(bioskey(1)bioskey(0);void CheckState()int i,j,ept;for(i=0;i=0;i-) ept=0; for(j=0;j16;j+) if(spacej=0)ept=1; if(!ept)ClearLine(i);void MoveLeft()int can=1;int i,j;for(i=0;i4;i+) for(j=0;j4;j+) if(cur_bar.tcur_bar.vj) if( (cur_bar
22、.j+j-10)|(spacecur_bar.i+icur_bar.j+j-1) )can=0; if(can) cur_bar.j-; DrawBox(); for(i=0;i4;i+) for(j=0;j4;j+) if(cur_bar.tcur_bar.vj) & !cur_bar.tcur_bar.vj+1) bar(160+(cur_bar.j*20)+j*20+20,(cur_bar.i*20)+i*20,160+(cur_bar.j*20)+j*20+40,(cur_bar.i*20)+i*20+20); rectangle(160+(cur_bar.j*20)+j*20+20,
23、(cur_bar.i*20)+i*20,160+(cur_bar.j*20)+j*20+40,(cur_bar.i*20)+i*20+20); if(IsFall() for(i=0;i4;i+) for(j=0;j4;j+) spacecur_bar.i+icur_bar.j+j=cur_bar.tcur_bar.vj | spacecur_bar.i+icur_bar.j+j; CheckState(); switch(nexttype) case 1: CreateBar(0,7,bar1,nextvalue); break; case 2: CreateBar(0,7,bar2,nex
24、tvalue); break; case 3: CreateBar(0,7,bar3,nextvalue); break; case 4: CreateBar(0,7,bar4,nextvalue); break; case 5: CreateBar(0,7,bar5,nextvalue); break; case 6: CreateBar(0,7,bar6,nextvalue); break; case 7: CreateBar(0,7,bar7,nextvalue); break; nexttype=random(7)+1; switch(nexttype) case 1: nextval
25、ue=random(2); break; case 2: nextvalue=random(1); break; case 3: nextvalue=random(4); break; case 4: nextvalue=random(2); break; case 5: nextvalue=random(2); break; case 6: nextvalue=random(4); break; case 7: nextvalue=random(4); break; ShowNextWindow();void MoveRight()int can=1;int i,j;for(i=0;i4;i+) for(j=0;j15)|(spacecur_bar.i+icur_bar.j+j+1) )ca
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2