wintcC语言小游戏画图代码Word格式文档下载.docx
《wintcC语言小游戏画图代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《wintcC语言小游戏画图代码Word格式文档下载.docx(41页珍藏版)》请在冰豆网上搜索。
staticcharflag=0;
line(PubUnit[19][j].x+7,PubUnit[19][j].y,PubUnit[19][j].x+7,PubUnit[19][j].y+14);
line(PubUnit[19][j].x+7,PubUnit[19][j].y+2,PubUnit[19][j].x,PubUnit[19][j].y+14);
line(PubUnit[19][j].x+7,PubUnit[19][j].y+2,PubUnit[19][j].x+14,PubUnit[19][j].y+14);
line(PubUnit[19][j].x,PubUnit[19][j].y+14,PubUnit[19][j].x+14,PubUnit[19][j].y+14);
if(flag)
{setcolor(BLACK);
line(PubUnit[19][oldj].x+7,PubUnit[19][oldj].y,PubUnit[19][oldj].x+7,PubUnit[19][oldj].y+14);
line(PubUnit[19][oldj].x+7,PubUnit[19][oldj].y+2,PubUnit[19][oldj].x,PubUnit[19][oldj].y+14);
line(PubUnit[19][oldj].x+7,PubUnit[19][oldj].y+2,PubUnit[19][oldj].x+14,PubUnit[19][oldj].y+14);
line(PubUnit[19][oldj].x,PubUnit[19][oldj].y+14,PubUnit[19][oldj].x+14,PubUnit[19][oldj].y+14);
oldj=j;
setcolor(GREEN);
elseflag=1;
voidGameGraph(void)/*游戏画面和各项数据初始化函数*/
{inti,j;
intx,y;
intdriver=DETECT,gm;
registerbgidriver(EGAVGA_driver);
initgraph(&
driver,&
gm,"
"
);
rectangle(99,99,251,401);
x=y=100;
for(i=0;
i<
20;
i++)
{for(j=0;
j<
j++)
{PubUnit[i][j].x=x;
PubUnit[i][j].y=y;
x+=15;
}
y+=15;
x=100;
5;
i++)/*画50个泡泡*/
for(j=0;
10;
{PubState[i][j]=1;
DrawPub(i,j,PubState[i][j]);
DrawPPman(4);
HeadLine=4;
AllPubCount=50;
HeadPubCount=10;
voidmain(void)/*主函数*/
GameGraph();
play_game();
voidDownPub(void)/*泡泡下降函数,每调用一次泡泡就下降一次*/
{
inti,j;
for(i=HeadLine+1;
i>
0;
i--)
{PubState[i][j]=PubState[i-1][j];
for(j=0;
{PubState[0][j]=1;
DrawPub(0,j,PubState[0][j]);
AllPubCount+=10;
HeadLine++;
voidplay_game(void)
inttime=0;
intj=4;
while(HeadLine!
=19)
{while(time+72>
clock())
{if(kbhit())
{key=bioskey(0);
switch(key)
caseLEFT:
j--;
break;
caseRIGHT:
j++;
caseSPACE:
if(dflag==1){DrawBB(j);
BBState=1;
dflag=0;
continue;
}else
continue;
default:
continue;
if(j==-1){j=0;
elseif(j==10){j=9;
DrawPPman(j);
if(BBState)
DrawBB(-1);
DownPub();
time=clock();
gotoxy(1,1);
intDrawBB(intj)/*画子弹函数*/
inti;
intc;
staticoldj;
if(j>
=0)
{bbx=PubUnit[19][j].x+7;
bby=PubUnit[19][j].y;
line(bbx,bby,bbx,bby+4);
oldj=j;
if(getpixel(bbx,bby-5)!
=BLACK)
{if(getpixel(bbx,bby-5)==WHITE);
line(bbx,bby,bbx,bby-4);
dflag=1;
BBState=0;
for(i=19;
=0;
if(PubState[i][oldj]==1)
{PubState[i][oldj]=0;
DrawPub(i,oldj,0);
AllPubCount--;
if(AllPubCount==0)
{cleardevice();
printf("
YOUAREWINTHEGAME,GOODBOY!
printf("
\nanykeytoexit!
\n"
getch();
exit
(1);
if(i==HeadLine)
{HeadPubCount--;
if(HeadPubCount==0){HeadLine--;
for(c=0;
c<
c++)
if(PubState[HeadLine][c]==1)HeadPubCount++;
setcolor(BLACK);
return;
putpixel(bbx,bby-5,GREEN);
putpixel(bbx,bby,BLACK);
bby--;
delay(500);
/*这个东西不怎么完善,后面的如果和前面位置重合,就会被覆盖,不管十字鼠标
或圆,以及它们的颜色,
而且如何计算圆的半径,也只是粗略大概的计算
一下,结果当然不会像Windows画图那样正确,把它就当作简单的鼠标应用学习学习吧*/
dos.h>
voidDrawMouse(intx,inty,intcolor)
setcolor(color);
line(x-5,y,x+5,y);
line(x,y-5,x,y+5);
main()
intflag=0;
intfirst=0;
intCircleX,CircleY,CircleDX;
intMouseX,MouseY,MouseButton;
while(!
kbhit())
_AX=0x03;
geninterrupt(0x33);
MouseX=_CX;
MouseY=_DX;
MouseButton=_BX;
DrawMouse(MouseX,MouseY,WHITE);
if(MouseButton==1)
{flag=1;
if(first==0){CircleX=MouseX;
CircleY=MouseY,first=1;
delay(5000);
setcolor(BLACK);
circle(CircleX,CircleY,CircleDX);
else{flag=0;
first=0;
if(flag==1)
{setcolor(WHITE);
CircleDX=abs(MouseX-CircleX)+abs(MouseY-CircleY);
DrawMouse(MouseX,MouseY,BLACK);
/*下面这个计算器,是我第一次写的,有很多缺陷,被我改了很多,可是还是有
几个缺陷,本来为了凑界面上的按键,我增加一个求余运算,到最后发现
是一个错误,因为求余运算不支持浮点型的,所以,还要增加一个判断,如果是求余
运算,是否有小数参与运算,前面我发现太多类似这样的问题,被我一个
一个给改过来了,现在又来了一个,另外还有几个问题没有解决,如一开始,不按
数字,直接按加减运算符的话,居然被承认,算了,不想改了,我打算以后另写一个
好一点的.
因为这个写得实在不怎么样,就算都改好了,也没什么价值.
还不如另写一个.*/
void*pmouse;
structBLOCK
}block[5][4];
intMouseX,MouseY;
doubleFirstNumber,SecondNumber;
charsignal;
charCurrentSig;
charCS[20];
charFristCS[10];
charSecondCS[10];
intposition=0;
DrawBlock(intx,inty)
setfillstyle(1,LIGHTGRAY);
bar(x,y,x+30,y+30);
setcolor(WHITE);
line(x,y,x+30,y);
line(x,y,x,y+30);
line(x,y+30,x+30,y+30);
line(x+30,y,x+30,y+30);
rectangle(x-1,y-1,x+31,y+31);
voidGraph()
intx,y;
inti,j;
intsize;
intdriver=DETECT,gm;
registerbgidriver(EGAVGA_driver);
initgraph(&
moveto(220,220);
linerel(7,7);
linerel(-5,-1);
linerel(3,6);
linerel(-3,1);
linerel(-1,-6);
linerel(-3,3);
linerel(2,-10);
size=imagesize(217,220,228,234);
pmouse=malloc(size);
getimage(217,220,228,234,pmouse);
cleardevice();
bar(220,130,375,360);
line(220,130,375,130);
line(220,130,220,360);
setcolor(LIGHTGRAY);
line(375,325,220,360);
line(375,325,375,130);
setfillstyle(1,BLACK);
bar(230,140,365,170);
line(365,170,365,140);
line(365,170,230,170);
x=230;
y=180;
for(i=0;
4;
{block[i][j].x=x;
x+=35;
block[i][j].y=y;
DrawBlock(block[i][j].x,block[i][j].y);
y+=35;
settextstyle(0,0,1);
outtextxy(block[0][0].x+5,block[0][0].y+10,"
CE"
outtextxy(block[0][1].x+5,block[0][1].y+10,"
BAK"
outtextxy(block[0][2].x+5,block[0][2].y+10,"
ESC"
settextstyle(0,0,2);
outtextxy(block[0][3].x+10,block[0][3].y+10,"
%"
outtextxy(block[1][0].x+10,block[1][0].y+10,"
7"
outtextxy(block[1][1].x+10,block[1][1].y+10,"
8"
outtextxy(block[1][2].x+10,block[1][2].y+10,"
9"
outtextxy(block[1][3].x+10,block[1][3].y+10,"
+"
outtextxy(block[2][0].x+10,block[2][0].y+10,"
4"
outtextxy(block[2][1].x+10,block[2][1].y+10,"
5"
outtextxy(block[2][2].x+10,block[2][2].y+10,"
6"
outtextxy(block[2][3].x+10,block[2][3].y+10,"
-"
outtextxy(block[3][0].x+10,block[3][0].y+10,"
1"
outtextxy(block[3][1].x+10,block[3][1].y+10,"
2"
outtextxy(block[3][2].x+10,block[3][2].y+10,"
3"
outtextxy(block[3][3].x+10,block[3][3].y+10,"
*"
outtextxy(block[4][0].x+10,block[4][0].y+10,"
0"
outtextxy(block[4][1].x+10,block[4][1].y+10,"
."
outtextxy(block[4][2].x+10,block[4][2].y+10,"
="
outtextxy(block[4][3].x+10,block[4][3].y+10,"
/"
setfillstyle(1,BLACK);
intCheckMouse(intx,inty)
while(x==_CX&
&
y==_DX&
!
if(_BX==1)return1;
return0;
voidDrawUpKey(intx,inty);
intMouseButton;
intx,y,i,j;
Graph();
putimage(MouseX,MouseY,pmouse,XOR_PUT);
if(MouseButton==1&
MouseX>
230&
MouseX<
365&
MouseY>
180&
MouseY<
350)
CheckKey(MouseX,MouseY);
CheckMouse(MouseX,MouseY);
voidDrawUpKey(intx,inty)
while(_BX==1)
setcolor(DARKGRAY);
line(x+30,y+30,x,y+30);
line(x+30,y+30,x+30,y);
CheckKey(MouseX,MouseY)
CurrentSig=0;
if(MouseX>
260&
210)
rectangle(230,180,260,210);
DrawUpKey(230,180);
CurrentSig='
c'
;
elseif(MouseX>
265&
295&
rectangle(265,180,295,210);
DrawUpKey(265,180);
b'
300&
330&
rectangle(300,180,330,210);
DrawUpKey(300,180);
e'
335&
rectangle(335,180,365,210);
DrawUpKey(335,180);
%'
215&
245)
rectangle(230,215,260,245);
DrawUpKey(230,215);
7'
rectangle(265,215,295,245);
DrawUpKey(265,215);
8'
rectangle(300,215,330,245);
DrawUpKey(300,215);
9'
rectangle(335,215,365,245);
DrawUpKey(335,215);
+'
250&
280)
rectangle(230,250,260,280);
DrawUpKey(230,250);
4'
rectangle(265,250,295,280);
DrawUpKey(265,250);
5'
33