c语言作业十全十美,十全十美游戏原程序

本文分享了一个使用C语言编写的简单图形游戏源代码。作者通过实战练习介绍了如何利用C语言进行基本的图形界面设计及游戏逻辑处理,适合C语言初学者实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学了好长时间C了,一直想做点什么,以前一直编一些很菜的游戏用来练手,暑假又做了一个16位图形处理系统,代码又长又烂,除了我没人能看懂,这些日子有按耐不住,编了这个简单的不能再简单的游戏,对初学者很有帮助!

#include

#include

#include

int x,y;

void doexit(),saveimage(),doimage(),imagedrive();

void  *buff;

main()

{

int i,j,key;

int dokey();

char ch[]="BEAUIDEAL",c[]="help: right,down,left,up,enter,esc; very easy,OK!~!";

imagedrive();

saveimage();

cleardevice();

setbkcolor(7);

setcolor(1);

settextstyle(0,0,2);

outtextxy(250,50,ch);

setlinestyle(1,0,3);

rectangle(30,30,600,400);

setlinestyle(0,0,0);

settextstyle(0,0,1);

setcolor(8);

outtextxy(100,380,c);

setcolor(15);

for(i=0;i<5;i++)

for(j=0;j<5;j++)

rectangle(200+j*35,100+i*35,230+j*35,130+i*35);

setcolor(1);

rectangle(200,100,230,130);

x=200;

y=100;

while(1)

{

key=bioskey(0);

dokey(key);

}

free(buff);

closegraph();

}

void saveimage()   /*存储方格*/

{

bar(0,0,29,29);

buff=sizeof(imagesize(0,0,29,29));

getimage(0,0,28,28,buff);

}

void imagedrive()   /*图形模式初始化*/

{

int gd,gm;

gd=VGA;

gm=VGAHI;

initgraph(&gd,&gm,"");

cleardevice();

}

void doimage(x,y)   /*画方格*/

{

void tell();

putimage(x+1,y+1,buff,1);

if(x!=200)

putimage(x+1-35,y+1,buff,1);

if(x!=340)

putimage(x+1+35,y+1,buff,1);

if(y!=100)

putimage(x+1,y+1-35,buff,1);

if(y!=240)

putimage(x+1,y+1+35,buff,1);

tell();

}

int dokey(key)  /*键盘处理*/

int key;

{

int prect(),nrect();

switch(key)

{

case 0x4800 : if(y!=100) {prect(x,y);nrect(x,y-=35);} break;

case 0x4b00 : if(x!=200) {prect(x,y);nrect(x-=35,y);} break;

case 0x4d00 : if(x!=340) {prect(x,y);nrect(x+=35,y);} break;

case 0x5000 : if(y!=240) {prect(x,y);nrect(x,y+=35);} break;

case 0x11b  : doexit();break;

case 0x1c0d : doimage(x,y);break;

}

}

void tell()   /*判断是否画满*/

{

void win();

int color=15,t=0,i,j;

for(i=0;i<5;i++)

for(j=0;j<5;j++)

if(color!=getpixel(215+i*35,115+j*35))

{t=1;break;}

if(t==0)

win();

}

void win()

{

char c;

settextstyle(3,0,2);

outtextxy(50,100,"YOU WIN !! do you want to replay (y/n) ");

do

{

c=getch();

if(c=='y'||c=='Y')

main();  /*从新玩就返回主函数*/

if(c=='n'||c=='N')

doexit();

}while(c=='y'||c=='Y'||c=='n'||c=='N');

}

int prect(x,y)   /*在新位置画方框*/

{

setcolor(15);

rectangle(x,y,x+30,y+30);

}

int nrect(x,y)   /*将原来位置的方框清除*/

{

setcolor(1);

rectangle(x,y,x+30,y+30);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值