问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

急需100行左右的C语言程序

发布网友 发布时间:2022-04-21 23:20

我来回答

3个回答

热心网友 时间:2023-09-23 16:53

/*-------------------------------------------------------*/
/* 俄罗斯方块 */
/* */
/*-------------------------------------------------------*/

/*------------- Compile ------------------------------ */
/* [in os mode:] */
/* bgiobj egavga */
/* tlib lib\graphics.lib+egavga */
/* [in TC: ] */
/* make exe */
/*-------------------------------------------------------*/
#include <stdlib.h>
#include <graphics.h>
#include <bios.h>
#define mDRAW 5
#define mLINE 6
#define mADOWN 7
#define mGEN 8
#define mLEFT 75
#define mRIGHT 77
#define mSPACE 57
#define mDOWN 80
#define mESC 1
#define TIMEINT 2
#define MAXX 9
#define MAXY 30
#define BACKCOLOR BLACK
#define WINX 50
#define WINY 470
#define GAP 6
#define AREAX (WINX+GAP)
#define AREAY (WINY-GAP)
#define BOXW 15

int oldarea[MAXY+1][MAXX];
int area[MAXY+1][MAXX];
int actW,actH,actX,actY;
int curX,curY,curColor,curW,curH;
int newX,newY,newColor,newW,newH;
int active;
int box[4][4];
int FORCOLOR;
int MESSAGE;
int BOX[7][4][4]={
{
{1,1,1,1},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0}
},{
{1,1,1,0},
{1,0,0,0},
{0,0,0,0},
{0,0,0,0}
},{
{1,1,1,0},
{0,0,1,0},
{0,0,0,0},
{0,0,0,0}

},{
{1,1,1,0},
{0,1,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,1,1,0},
{1,1,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}
}
};

void init();
void draw();
int genBox();
int getKey();
void lineFull();
int moveLeft();
int moveRight();
int moveDown();
int rotate();
int getW();
int getH();
void clearOldBox();
void putNewBox();
int collisionRotate(int box[][4]);
void getMessage();
void dispatchMessage();
int timeCome();
void fallDown();
int gameOver();

main()
{
int i;
init();
do
{
getMessage();
dispatchMessage();
}
while(!gameOver());

getch();
closegraph();
}

void getMessage()
{
if(MESSAGE) return;
if(timeCome())
{
MESSAGE=mADOWN;
return;
}
if(bioskey(1))
{
MESSAGE=bioskey(0)>>8;
return;
}
}

void dispatchMessage()
{
switch(MESSAGE)
{
case mLEFT: moveLeft();break;
case mRIGHT: moveRight();break;
case mADOWN: moveDown();break;
case mSPACE: rotate();break;
case mDOWN: fallDown(); break;
case mDRAW: draw();break;
case mLINE: lineFull();break;
case mGEN: genBox();break;
case mESC: closegraph(); exit(0);
default: MESSAGE=0;
}
}

void fallDown()
{
while(active)
{
moveDown(); draw();
}

MESSAGE=mLINE;
}

int timeCome()
{

static long tm, old;
tm=biostime(0,tm);
if(tm-old<TIMEINT) return 0;
else
{
old=tm; return 1;
}
}

void init()
{
int i,j,x1,y1,x2,y2;
int driver=DETECT, mode=0;
randomize();
registerbgidriver(EGAVGA_driver);
initgraph(&driver,&mode,"");
cleardevice();
setfillstyle(SOLID_FILL,BLUE);
bar(0,0,639,479);
x1=AREAX;
y1=AREAY-BOXW*MAXY;
x2=AREAX+MAXX*BOXW;
y2=AREAY;
rectangle(--x1,--y1,++x2,++y2);
setfillstyle(SOLID_FILL,BLACK);
bar(++x1,++y1,--x2,--y2);
y1=AREAY-MAXY*BOXW; y2=AREAY;
setcolor(DARKGRAY);
for(i=0;i<MAXX;i++)
{
x1=AREAX+i*BOXW;
line(x1,y1,x1,y2);
}

x1=AREAX; x2=x1+MAXX*BOXW;
for(j=0;j<MAXY;j++)
{
y1=AREAY-j*BOXW;
line(x1,y1,x2,y1);
}
for(j=0;j<MAXY;j++)
for(i=0;i<MAXX;i++)
area[j][i]=oldarea[j][i]=0;
actX=0; actY=0; actW=MAXX-1; actH=MAXY-1;
draw();
MESSAGE=mGEN;
}

int genBox()
{
int i,j,boxidx;
boxidx=random(7); FORCOLOR=random(7)+1;
for(j=0;j<4;j++)
for(i=0;i<4;i++)
box[j][i]=BOX[boxidx][j][i];
curW=getW(); curH=getH();
curX=(MAXX+curW)/2;
if(curX+curW>=MAXX)curX=MAXX-1-curW;
curY=MAXY-1-curH;
newX=curX; newY=curY; actX=curX;actY=curY;
actW=newW=curW; actH=newH=curH;
active=1;
if(collision(box)) return 0;
putNewBox();
draw(); MESSAGE=0;
return 1;
}

void lineFull()
{
int row,col, rowEnd,full,i,j;
rowEnd=newY+newH;
if(rowEnd>=MAXY-1) rowEnd=MAXY-2;
for(row=newY; row<=rowEnd;)
{
full=1;
for(col=0;col<MAXX;col++)
if(!area[row][col]){full=0; break;}
if(!full){++row; continue;}
for(j=row; j<MAXY-1;j++)
for(i=0;i<MAXX;i++)
area[j][i]=area[j+1][i];
actX=0;actY=row; actW=MAXX-1; actH=MAXY-1-row;
draw(); rowEnd--;
}
MESSAGE=mGEN;
}

void draw()
{
int row,col,x1,y1,x2,y2;
for(row=actY;row<=actY+actH;row++)
for(col=actX;col<=actX+actW;col++)
if(area[row][col]!=oldarea[row][col])
{
if(area[row][col]==0)
setfillstyle(SOLID_FILL,BACKCOLOR);
else
setfillstyle(SOLID_FILL,FORCOLOR);

x1=AREAX+col*BOXW; x2=x1+BOXW;
y1=AREAY-(row+1)*BOXW; y2=y1+BOXW;
bar(++x1,++y1,--x2,--y2);
oldarea[row][col]=area[row][col];
}

MESSAGE=0;
}

int moveLeft()
{
newX=curX-1; clearOldBox();
if(collision(box))
{
newX=curX;
putNewBox();
MESSAGE=0;
return 0;
}
putNewBox();
actW=curW+1; actX=curX=newX;
MESSAGE=mDRAW;
return 1;
}

int moveRight()
{
newX=curX+1; clearOldBox();
if(collision(box))
{
newX=curX;
putNewBox();
MESSAGE=0;
return 0;
}
putNewBox();
actW=curW+1; actX=curX; curX=newX;
MESSAGE=mDRAW;
return 1;
}

int moveDown()
{
int i,j;
newY=curY-1;
clearOldBox();
if(collision(box))
{
newY=curY;
putNewBox();
active=0;
MESSAGE=mLINE;
return 0;
}
putNewBox();
actH=curH+1; actY=newY; curY=newY;
MESSAGE=mDRAW;
return 1;
}

int rotate()
{
int newBox[4][4];
int i,j;
clearOldBox();

for(j=0;j<4;j++)
for(i=0;i<4;i++)
newBox[j][i]=0;

for(j=0;j<4;j++)
for(i=0;i<4;i++)
newBox[curW-i][j]=box[j][i];
newW=curH; newH=curW;
if(collisionRotate(newBox))
{
newW=curW; newH=curH; newX=curX; newY=curY;
putNewBox();
MESSAGE=0;
return 0;
}

for(j=0;j<4;j++)
for(i=0;i<4;i++)
box[j][i]=newBox[j][i];
putNewBox();
actH=newH>curH? newH:curH;
actW=curX+actH-newX;
actX=newX; actY=newY; curX=newX;
curY=newY; curW=newW; curH=newH;
MESSAGE=mDRAW;
return 1;
}

int getW()
{
int i,j;
for(i=3;i>0;i--)
for(j=0;j<4;j++)
if(box[j][i]) return i;
return 0;
}

int getH()
{
int i,j;
for(j=3;j>0;j--)
for(i=0;i<4;i++)
if(box[j][i]) return j;
return 0;
}

void clearOldBox()
{
int i,j;
for(j=0;j<=curH; j++)
for(i=0;i<=curW; i++)
if(box[j][i])
area[curY+j][curX+i]=0;
}

void putNewBox()
{
int i,j;
for(j=0;j<=newH;j++)
for(i=0;i<=newW;i++)
if(box[j][i])
area[newY+j][newX+i]=FORCOLOR;
}

int collision(int cbox[][4])
{
int i,j;
if(newX<0) return 1;
if(newX+newW>=MAXX) return 1;
if(newY<0) return 1;
for(j=0;j<=newH;j++)
for(i=0;i<=newW;i++)
if(area[newY+j][newX+i]&&cbox[j][i]) return 1;
return 0;
}

int collisionRotate(int cbox[][4])
{
int i,j;
if(newX+newW>=MAXX) newX=MAXX-1-newW;
if(newY+newH>=MAXY) newY=MAXY-1-newH;
if(collision(cbox)) return 1;
for(i=0;i<=newW;i++)
for(j=0;j<=newH;j++)
if(area[newY+j][newX+i])
{
newX-=newW-i+1; goto L;
}
L: return collision(cbox);
}

int gameOver()
{
if(!active &&(curY+curH>MAXY-3)) return 1;
else return 0;
}

/* the end */

热心网友 时间:2023-09-23 16:53

要实现什么功能嘛?
随便什么100行就OK了?

热心网友 时间:2023-09-23 16:54

#include<stdio.h>
void main(){
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
printf("aaa");
}
要多少行有多少行~!哈哈
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 急需100万怎么办 急需一百块钱…怎么办啊?! 急需100条文学常识 有急用,急需100块应急? 急需100条春联,不要重复! 急需一百块钱,亲戚朋友都借过了,都说没有,求帮助 带动物的成语急需100个! 我司要开拓上海市场,急需100名地推人员, 怎么办?? 急需100脑筋急转弯 急需100元 怎么办 就差一百元 暑假日记急需100字左右 20篇 我急需100元钱,怎么办? 急需一百元怎么办 急需借100元,哪里可以借?求支招 写回答有奖 急需100元怎么办 急需100元 怎么也借不到 怎么办? 现在急需100元,除了借钱有什么办法争取呢? 急需100块钱怎么办 iphone6s和iphone8的区别 苹果微信支付被拒怎么解除? 微视是不是只有认证原创优质者才能获得视频店点击... 微视号怎么赚钱 早上一起床就有口黑色痰怎么回事 微视为什么不能赚钱,打开微视,没有那个红包小圆... 早上起床喉咙有痰,吐出来居然是黑色的,带血,这... 微视达人必须签约公会才能认证?没有别的认证办法吗? 喉咙总是有痰早上起床咳出来的痰是有点黑黑的。喉... 咳出来的痰带点黑色是什么原因? 早上起来,喉咙里感觉有痰,咳出来的是紫黑色的血...... 早上起床后喉咙有痰怎么回事 喉咙有痰带黑怎么办? 嗓子老有痰一咳是黑色的痰是怎么回事 早上有痰黑色或者深咖啡色有过敏性鼻炎和慢性咽喉炎, 最近嗓子里好像的痰吐不出来也咽不下去,第二天早... 痰多且带黑色杂质是怎么回事? 嗓子疼,有痰,吃东西难受,尤其是每天早上起来最难受... 喉咙经常干燥,总感觉有痰,特别是早晨起来总感觉... 华为畅享6S和荣耀8青春版有什么区别 步步高家教机可以下载360清理内存 设置360自动清理内存