c语言编程小游戏小游戏

C语言/C++ 打造经典小游戏2048—罗伯特老师_腾讯视频
三倍流畅播放
1080P蓝光画质
新剧提前看
1080P蓝光画质
纯净式无框播放器
三倍流畅播放
扫一扫 手机继续看
下载需先安装客户端
{clientText}
客户端特权:
3倍流畅播放
当前播放至 {time}
扫一扫 手机继续看
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要用c语言编一个小游戏
#include &stdio.h&#include &graphics.h&#include &conio.h&#include &stdlib.h&#include &math.h&void initgr(void){
int gd=DETECT,
registerbgidriver(EGAVGA_driver);
initgraph(&gd,&gm,&&);}int x1=200,y1=100;cha.....
#include &stdio.h&#include &graphics.h&#include &conio.h&#include &stdlib.h&#include &math.h&void initgr(void){
int gd=DETECT,
registerbgidriver(EGAVGA_driver);
initgraph(&gd,&gm,&&);}int x1=200,y1=100;char accept,*p,*q;int *void
turn_right(char accept);void
turn_left(char accept) ;void
turn_down(char accept) ;void
change();void main(){
int polygon1[18],polygon2[18],polygon3[18],polygon4[18];
/*第一方块*/
polygon1[0]=x1;
polygon1[1]=y1;
polygon1[2]=x1+30;
polygon1[3]=y1;
polygon1[4]=x1+30;
polygon1[5]=y1+10;
polygon1[6]=x1+20;
polygon1[7]=y1+10;
polygon1[8]=x1+20;
polygon1[9]=y1+20;
polygon1[10]=x1+10;
polygon1[11]=y1+20;
polygon1[12]=x1+10;
polygon1[13]=y1+10;
polygon1[14]=x1;
polygon1[15]=y1+10;
polygon1[16]=x1;
polygon1[17]=y1;
/*第二方块*/
polygon2[0]=x1+10;
polygon2[1]=y1;
polygon2[2]=x1+20;
polygon2[3]=y1;
polygon2[4]=x1+20;
polygon2[5]=y1+30;
polygon2[6]=x1+10;
polygon2[7]=y1+30;
polygon2[8]=x1+10;
polygon2[9]=y1+20;
polygon2[10]=x1;
polygon2[11]=y1+20;
polygon2[12]=x1;
polygon2[13]=y1+10;
polygon2[14]=x1+10;
polygon2[15]=y1+10;
polygon2[16]=x1+10;
polygon2[17]=y1;
you=polygon2;
/*设置方块*/
setcolor(RED);
setbkcolor(8);
setfillstyle(1,RED);
drawpoly(9,polygon2);
floodfill(x1+14,y1+14,RED);
setcolor(14);
drawpoly(9,polygon2);
/*把方块信息载入*/
p=malloc(imagesize(x1,y1,x1+30,y1+20));
/*enter=13*/
getimage(x1,y1,x1+30,y1+30,p);
/*接受字符判断和实现方块的具体移动*/
accept=getch();
while(accept!='*'){
if(accept=='d'||accept=='D')
turn_right(accept);
else if(accept=='a'||accept=='A')
turn_left(accept);
else if(accept=='s'||accept=='S')
turn_down(accept);
accept=getch();
/* if(accept==13) change();
/*结束函数*/
closegraph();}void
turn_right(char accept) /*把方块向右移动*/{
while(accept=='d'||accept=='D'){
putimage(x1,y1,p,1);
putimage(x1,y1,p,1);
accept=getch();
/* if(accept==13) change();
delay(000);
}}void turn_left(char accept)
/*把方块向左移动*/{
while(accept=='a'||accept=='A'){
putimage(x1,y1,p,1);
putimage(x1,y1,p,1);
accept=getch();
/* if(accept==13) change();
delay(000);
}}void turn_down(char accept)
/*把方块向下移动*/{
while(accept=='s'||accept=='S'){
putimage(x1,y1,p,1);
putimage(x1,y1,p,1);
accept=getch();
if(accept==13) change();
delay(1000000);
}}/*void change(){
setcolor(8);
setfillstyle(1,8);
rectangle(x1,y1,x1+30,y1+30);
floodfill(x1+15,y1+15,8);
setcolor(RED);
setbkcolor(8);
setfillstyle(1,RED);
drawpoly(9,you);
floodfill(x1+14,y1+14,RED);
setcolor(14);
drawpoly(9,you);
p=malloc(imagesize(x1,y1,x1+30,y1+20));
getimage(x1,y1,x1+30,y1+30,p);}
在不同机子上编译时需修改init()函数中TC路径#include &graphics.h&#include &stdlib.h&...
在不同机子上编译时需修改init()函数中TC路径#include &graphics.h&#include &stdlib.h&#include &math.h&#include &bios.h&#define pi 3.14#define r 10#define right 8292#define left
7777#define esc 283#define pause 14624struct ball{
int oldx,/*球的方向采用角度制,范围是0-360度*/}struct platform{
int oldx,}int score=0;/*得分*/int speed=1;/*速度*/void init();void base();void scoreview();void play();double change(int x);void gameover();void close();void main(){
scoreview();
close();}void init()/*初始化图形模式*/{
int gm=DETECT,
initgraph(&gm,&gd,&G:\\tc\\bgi&);/*根据不同的TC进行路径修改*/}void close()/*关闭图形模式*/{
closegraph();}void base()/*画边框,球以及板并且对球和板的各参数初始化*/{
setbkcolor(GREEN);
setcolor(8);
setfillstyle(4,LIGHTGRAY);
rectangle(149,149,501,351);
rectangle(140,140,510,360);
floodfill(141,141,8);
setfillstyle(9,BLUE);
platform.x=300;
platform.y=343;
bar(platform.x,platform.y,platform.x+40,platform.y+5);
randomize();
ball.x=random(330)+160;
ball.y=160;
rection=random(30)+280;
setfillstyle(1,YELLOW);
setcolor(YELLOW);
fillellipse(ball.x,ball.y,r,r);}void scoreview()/*显示当前的得分数*/{
char sco[20];
setcolor(WHITE);
setfillstyle(1,YELLOW);
bar(300,50,440,80);
sprintf(sco,&score:%d&,score);
setcolor(RED);
settextstyle(0,0,2);
outtextxy(310,60,sco);}void play(){
settextstyle(0,0,2);
setcolor(11);
outtextxy(50,400,&'A'for left
'D'for right&);/*提示各个控制键*/
outtextxy(50,450,&'space'for pause
'ESC' for quit&);
setcolor(RED);
setfillstyle(1,GREEN);
while(!kbhit())/*开始之前提示按任意键进入游戏,且提示不停闪烁*/
outtextxy(100,100,&press any key to begin!&);
delay(400);
bar(100,100,500,120);
delay(400);
while(!kbhit())
ball.oldx=ball.x;
ball.oldy=ball.y;/*记录下当前球的位置*/
/*根据球的方向来利用角度的正切值来改变球的坐标*/
if( rection&0&& rection&90) {ball.x+=10;ball.y+= (-10*tan(change( rection)));}
if( rection&90&& rection&180) {ball.x+=-10;ball.y+=(10*tan(change( rection)));}
if( rection&180&& rection&270) {ball.x+=-10;ball.y+=(10*tan(change( rection)));}
if( rection&270&& rection&360) {ball.x+=10;ball.y+=(-10*tan(change( rection)));}
if(ball.y+r&=platform.y)/*如果球到底有两种情况*/
{if(ball.x+r-platform.x&0||ball.x-r-platform.x&40) /*球不在板上*/
ball.y=platform.y-r+7;
setfillstyle(1,GREEN);
setcolor(GREEN);
fillellipse(ball.oldx,ball.oldy,r,r);
/*球在游戏结束处闪烁五次*/
setfillstyle(1,YELLOW);
setcolor(YELLOW);
fillellipse(ball.x,ball.y,r,r);
delay(300);
setfillstyle(1,GREEN);
setcolor(GREEN);
fillellipse(ball.x,ball.y,r,r);
delay(300);
gameover();/*游戏结束*/
else { ball.y=platform.y-r;
rection=/*球在板上的话得一分,且速度加一但不能超过5*/
if(speed&5) speed=5;
scoreview();/*刷新得分*/
/*如果球撞墙或板后修正坐标并改变方向*/
if(ball.y-r&150)
ball.y=150+r;
if(ball.x-r&150)
ball.x=150+r;
if( rection&180&& rection&270)
if( rection&90&& rection&180)
if(ball.x+r&500)
ball.x=500-r;
if( rection&270&& rection&360)
if( rection&0&& rection&90)
setfillstyle(1,GREEN);
setcolor(GREEN);
fillellipse(ball.oldx,ball.oldy,r,r);/*在先前位置用底色抹掉球*/
setfillstyle(1,YELLOW);
setcolor(YELLOW);
fillellipse(ball.x,ball.y,r,r);/*在新位置显示球*/
delay(150+(5-speed)*50);
/*对底板的控制*/
key=bioskey(0);
platform.oldx=platform.x;
platform.oldy=platform.y;/*记录下底板先前位置*/
/*通过方向键改变底板的坐标*/
if(key==right) platform.x+=15;
if(key==left) platform.x-=15;
if(key==esc) gameover();
/*如果暂停则闪烁提示按任意键(除暂停键)继续*/
if(key==pause)
while(!kbhit())
setcolor(RED);
outtextxy(10,20,&paused! press any key to continue.&);
delay(400);
setfillstyle(1,GREEN);
bar(10,20,600,40);
delay(400);
if(platform.x&150) platform.x=150;
if(platform.x&460) platform.x=460;/*对底板坐标修正*/
setfillstyle(1,GREEN);
bar(platform.oldx,platform.y,platform.oldx+40,platform.y+5);/*在先前位置抹掉底板*/
setfillstyle(9,BLUE);
bar(platform.x,platform.y,platform.x+40,platform.y+5);/*在新位置显示底板*/}}void gameover()/*游戏结束,显示最终得分*/{char buffer[50];cleardevice();sprintf(buffer,&your final score is:%d&,score);setcolor(BLUE);settextstyle(0,0,3);outtextxy(100,300,buffer);setcolor(RED);settextstyle(0,0,5);outtextxy(0,150,&thanks for play!&);getch();exit(0);}
double change(int x)/*将角度转化为弧度*/{
return(x*pi/180);}
类似问题换一批
相关推荐换一换
有问题 @ 爱问Powered by iask.com
举报原因(必选):
广告或垃圾信息
不雅词句或人身攻击
激进时政或意识形态话题
侵犯他人隐私
其它违法和不良信息C语言小游戏_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言小游戏
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩2页未读,
定制HR最喜欢的简历
你可能喜欢扫一扫体验手机阅读
用C语言实现简单的三子棋小游戏
<span type="1" blog_id="1725836" userid='
12篇文章,1W+人气,0粉丝
大数据时代的微服务之路
¥51.00488人订阅
<span type="1" blog_id="1725836" userid='经典C语言小程序10例(下载,攻略问答,视频)_小黑游戏下载
分类:冒险解谜
下载数量:542692
更新:04-21
大小:76.82MB
经典C语言小程序10例
经典C语言小程序10例,今天给大家分享10个比较基础的C语言的小程序,附上几个常用的10个小例,希望给C语言初学者带来一定帮助,熟练运用,举一反三。1、题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。程序源代码:main()&{&int i,j,k;&printf(&/n&);&for(i=1;i&5;i++)    /*以下为三重循环*/& for(j=1;j&5;j++) &  for (k=1;k&5;k++)&   {&    if (i!=k&&i!=j&&j!=k)    /*确保i、j、k三位互不相同*/&    printf(&%d,%d,%d/n&,i,j,k);&    }&}2、题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。程序源代码:main()&{&&int bonus1,bonus2,bonus4,bonus6,bonus10,&scanf(&%ld&,&i);&bonus1=.1;bonus2=bonus1+.75;&bonus4=bonus2+.5;&bonus6=bonus4+.3;&bonus10=bonus6+.15;& if(i&=100000)&  bonus=i*0.1;& else if(i&=200000)&     bonus=bonus1+(i-.075;&    else if(i&=400000)&        bonus=bonus2+(i-.05;&       else if(i&=600000)&           bonus=bonus4+(i-.03;&          else if(i&=1000000)&              bonus=bonus6+(i-.015;&             else&              bonus=bonus10+(i-.01;&printf(&bonus=%d&,bonus);&}3、题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后 的结果满足如下条件,即是结果。程序源代码:#include &math.h&&main()&{&long int i,x,y,z;&for (i=1;i&100000;i++)& { x=sqrt(i+100);   /*x为加上100后开方后的结果*/&  y=sqrt(i+268);   /*y为再加上168后开方后的结果*/&   if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/&    printf(&/n%ld/n&,i);&  }&}4、题目:输入某年某月某日,判断这一天是这一年的第几天?程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。程序源代码:main()&{&int day,month,year,sum,&printf(&/nplease input year,month,day/n&);&scanf(&%d,%d,%d&,&year,&month,&day);&switch(month)/*先计算某月以前月份的总天数*/&{& case 1:sum=0;& case 2:sum=31;& case 3:sum=59;& case 4:sum=90;& case 5:sum=120;& case 6:sum=151;& case 7:sum=181;& case 8:sum=212;& case 9:sum=243;& case 10:sum=273;& case 11:sum=304;& case 12:sum=334;& defaultrintf(&data error&);&}&sum=sum+  /*再加上某天的天数*/& if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/&  leap=1;& else&  leap=0;&if(leap==1&&month&2)/*如果是闰年且月份大于2,总天数应该加一天*/&sum++;&printf(&It is the %dth day.&,sum); }5、题目:输入三个整数x,y,z,请把这三个数由小到大输出。程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x&y则将x与y的值进行交换,然后再用x与z进行比较,如果x&z则将x与z的值进行交换,这样能使x最小。程序源代码:main()&{&int x,y,z,t;&scanf(&%d%d%d&,&x,&y,&z);&if (x&y)&/*交换x,y的值*/&if(x&z)&/*交换x,z的值*/&if(y&z)&/*交换z,y的值*/&printf(&small to big: %d %d %d/n&,x,y,z);&}6、题目:用*号输出字母C的图案。程序分析:可先用&|&*&|&号在纸上写出字母C,再分行输出。程序源代码:#include &stdio.h&&main()&{&printf(&Hello C-world!/n&);&printf(& ****/n&);&printf(& */n&);&printf(& * /n&);&printf(& ****/n&);&}7、题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!程序分析:字符共有256个。不同字符,图形不一样。程序源代码:#include &stdio.h&&main()&{&char a=176,b=219;&printf(&%c%c%c%c%c/n&,b,a,a,a,b);&printf(&%c%c%c%c%c/n&,a,b,a,b,a);&printf(&%c%c%c%c%c/n&,a,a,b,a,a);&printf(&%c%c%c%c%c/n&,a,b,a,b,a);&printf(&%c%c%c%c%c/n&,b,a,a,a,b); }8、题目:输出9*9口诀。程序分析:分行与列考虑,共9行9列,i控制行,j控制列。程序源代码:#include &stdio.h&&main()&{& int i,j,& printf(&/n&);& for (i=1;i&10;i++)&  { for(j=1;j&10;j++)&    {&     result=i*j;&     printf(&%d*%d=%-3d&,i,j,result);/*-3d表示左对齐,占3位*/&     }&   printf(&/n&);/*每一行后换行*/&   }&}9、题目:要求输出国际象棋棋盘。程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。程序源代码:#include &stdio.h&&main()&{&int i,j;&for(i=0;i&8;i++)& {&  for(j=0;j&8;j++)&   if((i+j)%2==0)&    printf(&%c%c&,219,219);&   else&    printf(& &);&   printf(&/n&);&  }&}10、题目:打印楼梯,同时在楼梯上方打印两个笑脸。程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。程序源代码:#include &stdio.h&&main()&{&int i,j;&printf(&/n&);/*输出两个笑脸*/&for(i=1;i&11;i++)& {& for(j=1;j&=i;j++)&   printf(&%c%c&,219,219);& printf(&/n&);&  }&}
免责声明:发布此文仅为传递信息之用,不代表认同其观点或证实其描述。
玩游戏就上:
经典C语言小程序10例相关资讯攻略
手游排行榜

我要回帖

更多关于 c语言能做的简单小游戏 的文章

 

随机推荐