游戏代码编程入门编写(编程一个最简单游戏代码)

这篇文章主要为大家详细介绍了C语言实现俄罗斯方块小游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.要先下载一个graphics.h的头文件来绘图。 2.初始化窗口:initgraph(x,y);这是先创建一个窗口的函数,以左上角为(0,0),向右为x轴,向下为y轴,其中x表示长x个单位,y表示宽y个单位。 3.关闭图像窗口:closegraph();结束时用来关闭用的。 4.按任意键继…

这篇文章主要是为大伙儿介绍了C语言完成俄罗斯方块小手机游戏,具备一定的实用价值,有兴趣的小伙伴们可以参照一下

C/C

1.要先下载一个 graphics.h 的库函数来制图。

2.复位对话框:initgraph(x, y);这也是先建立一个对话框的函数公式,以左上方为(0,0),往右边为x轴,往下为y轴,在其中x表明长x个企业,y表明宽y个企业。

3.关掉图象对话框:closegraph();完毕时用于关掉用的。

4.按任意键再次:getch();这一就和getchar();类似,为了避免以运作完就关掉,那样能间断一下,他的库函数是:conio.h 。

5.画线:line(x1, y1, x2, y2);在你建立的那麼对话框里以(x1,y1)和(x2,y2)为2个节点画线。

6.画方形:rectangle(x1,y1,x2,y2);以(x1,y1)和(x2,y2)为顶角画一个方形。

7.画圆:circle(x,y,r);以(x,y)为小圆点,r为的半径画圆。

8.颜色:setcolor(x);用于设定颜色的,在其中x就是你要设定的颜色,可以填这16种:黑 BLACK、蓝 BLUE、绿 GREEN、青 CYAN、红 RED、紫 MAGENTA、棕 BROWN、浅灰色 LIGHTGRAY、深灰色 DARKGRAY、柠檬黄 LIGHTBLUE、亮红 LIGHTGREEN、亮青 LIGHTCYAN、亮红 LIGHTRED、亮紫 LIGHTMAGENTA、黄 YELLOW、白 WHITE;自然,你还可以依据光的三原色来调自身喜爱的颜色,方式是:setcolor(RGB(x,y,z));在其中RGB各自意味着红蓝绿,相匹配的x,y,z就是你选的该颜色的是多少,范畴是[0,255]。

C/C

#include <stdio.h>

#include <windows.h>

#include <conio.h>

#include <time.h>

//手机游戏对话框

#define FrameX 4 //手机游戏对话框左上方的X轴座标

#define FrameY 4 //手机游戏对话框左上方的Y轴座标

#define Frame_height 20 //手机游戏界面的相对高度

#define Frame_width 18 //手机游戏界面的总宽

//定义全局变量

int i,j,temp,temp1,temp2; //temp,temp1,temp2用以记牢和变换格子自变量的值

int a[80][80]={0}; //标识手机游戏显示屏的图案设计:2,1,0各自表明该部位为手机游戏外框、格子、无图案设计;复位为无图案设计

int b[4]; //标识4个”口”格子:1表明有格子,0表明无格子

//申明俄罗斯方块的结构体

struct Tetris

{

int x; //核心格子的x轴座标

int y; //核心格子的y轴座标

int flag; //标识格子种类的编号

int next; //下一个俄罗斯方块种类的编号

int speed; //俄罗斯方块挪动的速率

int count; //造成俄罗斯方块的数量

int score; //手机游戏的成绩

int level; //手机游戏的级别

};

//函数原型申明

//鼠标光标移到指定位置

void gotoxy(HANDLE hOut, int x, int y);

//制作小游戏对话框

void make_frame();

//任意造成格子种类的编号

void get_flag(struct Tetris *);

//制做俄罗斯方块

void make_tetris(struct Tetris *);

//打印出俄罗斯方块

void print_tetris(HANDLE hOut,struct Tetris *);

//消除俄罗斯方块的印痕

void clear_tetris(HANDLE hOut,struct Tetris *);

//分辨是不是能挪动,传参为1,能挪动,不然,没动

int if_moveable(struct Tetris *);

//分辨是不是满行,并删掉满行的俄罗斯方块

void del_full(HANDLE hOut,struct Tetris *);

//进入游戏

void start_game();

void main()

{

//制作小游戏对话框

make_frame();

//进入游戏

start_game();

}

/******鼠标光标移到指定位置**************************************************************/

void gotoxy(HANDLE hOut, int x, int y)

{

COORD pos;

pos.X = x; //横坐标轴

pos.Y = y; //纵轴

SetConsoleCursorPosition(hOut, pos);

}

/******制作小游戏对话框******************************************************************/

void make_frame()

{

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); //界定显示屏句柄自变量

gotoxy(hOut,FrameX Frame_width-5,FrameY-2); //打印出游戏的名字

printf(“俄罗斯方块”);

gotoxy(hOut,FrameX 2*Frame_width 3,FrameY 7); //打印出挑选菜单栏

printf(“**********下一个格子:”);

gotoxy(hOut,FrameX 2*Frame_width 3,FrameY 13);

printf(“**********”);

gotoxy(hOut,FrameX 2*Frame_width 3,FrameY 17);

printf(“↑键:组合”);

gotoxy(hOut,FrameX 2*Frame_width 3,FrameY 19);

printf(“空格符:中止手机游戏”);

gotoxy(hOut,FrameX 2*Frame_width 3,FrameY 15);

printf(“Esc :退出游戏”);

gotoxy(hOut,FrameX,FrameY); //打印出框角并记牢此处已经有图案设计

printf(“╔”);

gotoxy(hOut,FrameX 2*Frame_width-2,FrameY);

printf(“╗”);

gotoxy(hOut,FrameX,FrameY Frame_height);

printf(“╚”);

gotoxy(hOut,FrameX 2*Frame_width-2,FrameY Frame_height);

printf(“╝”);

a[FrameX][FrameY Frame_height]=2;

a[FrameX 2*Frame_width-2][FrameY Frame_height]=2;

for(i=2;i<2*Frame_width-2;i =2)

{

gotoxy(hOut,FrameX i,FrameY);

printf(“═”); //打印出上横框

}

for(i=2;i<2*Frame_width-2;i =2)

{

gotoxy(hOut,FrameX i,FrameY Frame_height);

printf(“═”); //打印下横框

a[FrameX i][FrameY Frame_height]=2; //记牢下横框有图案设计

}

for(i=1;i<Frame_height;i )

{

gotoxy(hOut,FrameX,FrameY i);

printf(“║”); //打印出左竖框

a[FrameX][FrameY i]=2; //记牢左竖框有图案设计

}

for(i=1;i<Frame_height;i )

{

gotoxy(hOut,FrameX 2*Frame_width-2,FrameY i);

printf(“║”); //打印出右竖框

a[FrameX 2*Frame_width-2][FrameY i]=2; //记牢右竖框有图案设计

}

}

/******制做俄罗斯方块********************************************************************/

void make_tetris(struct Tetris *tetris)

{

a[tetris->x][tetris->y]=b[0]; //核心格子部位的图型情况:1-有,0-无

switch(tetris->flag) //共6大类,19种类型

{

case 1: //田字方块

{

a[tetris->x][tetris->y-1]=b[1];

a[tetris->x 2][tetris->y-1]=b[2];

a[tetris->x 2][tetris->y]=b[3];

break;

}

case 2: //平行线方块:—-

{

a[tetris->x-2][tetris->y]=b[1];

a[tetris->x 2][tetris->y]=b[2];

a[tetris->x 4][tetris->y]=b[3];

break;

}

case 3: //直线方块: |

{

a[tetris->x][tetris->y-1]=b[1];

a[tetris->x][tetris->y-2]=b[2];

a[tetris->x][tetris->y 1]=b[3];

break;

}

case 4: //T字方块

{

a[tetris->x-2][tetris->y]=b[1];

a[tetris->x 2][tetris->y]=b[2];

a[tetris->x][tetris->y 1]=b[3];

break;

}

case 5: //T字顺时针方向转90度方块

{

a[tetris->x][tetris->y-1]=b[1];

a[tetris->x][tetris->y 1]=b[2];

a[tetris->x-2][tetris->y]=b[3];

break;

}

case 6: //T字顺时针转180度方块

{

a[tetris->x][tetris->y-1]=b[1];

a[tetris->x-2][tetris->y]=b[2];

a[tetris->x 2][tetris->y]=b[3];

break;

}

case 7: //T字顺时针方向转270度方块

{

a[tetris->x][tetris->y-1]=b[1];

a[tetris->x][tetris->y 1]=b[2];

a[tetris->x 2][tetris->y]=b[3];

break;

}

case 8: //Z字方块

{

a[tetris->x][tetris->y 1]=b[1];

a[tetris->x-2][tetris->y]=b[2];

a[tetris->x 2][tetris->y 1]=b[3];

break;

}

case 9: //Z字顺时针转90度方块

{

a[tetris->x][tetris->y-1]=b[1];

a[tetris->x-2][tetris->y]=b[2];

a[tetris->x-2][tetris->y 1]=b[3];

break;

}

case 10: //Z字顺时针方向转180度方块

{

a[tetris->x][tetris->y-1]=b[1];

a[tetris->x-2][tetris->y-1]=b[2];

a[tetris->x 2][tetris->y]=b[3];

break;

}

case 11: //Z字顺时针转270度方块

{

a[tetris->x][tetris->y 1]=b[1];

a[tetris->x 2][tetris->y-1]=b[2];

a[tetris->x 2][tetris->y]=b[3];

break;

}

case 12: //7字方块

{

a[tetris->x][tetris->y-1]=b[1];

a[tetris->x][tetris->y 1]=b[2];

a[tetris->x-2][tetris->y-1]=b[3];

break;

}

case 13: //7字顺时针方向转90度方块

{

a[tetris->x-2][tetris->y]=b[1];

a[tetris->x-2][tetris->y 1]=b[2];

a[tetris->x 2][tetris->y]=b[3];

break;

}

case 14: //7字顺时针转180度方块

{

a[tetris->x][tetris->y-1]=b[1];

a[tetris->x][tetris->y 1]=b[2];

a[tetris->x 2][tetris->y 1]=b[3];

break;

}

case 15: //7字顺时针方向转270度方块

{

a[tetris->x-2][tetris->y]=b[1];

a[tetris->x 2][tetris->y-1]=b[2];

a[tetris->x 2][tetris->y]=b[3];

break;

}

case 16: //倒7字方块

{

a[tetris->x][tetris->y 1]=b[1];

a[tetris->x][tetris->y-1]=b[2];

a[tetris->x 2][tetris->y-1]=b[3];

break;

}

case 17: //倒7字顺表针转90度方块

{

a[tetris->x-2][tetris->y]=b[1];

a[tetris->x-2][tetris->y-1]=b[2];

a[tetris->x 2][tetris->y]=b[3];

break;

}

case 18: //倒7字顺时针方向转180度方块

{

a[tetris->x][tetris->y-1]=b[1];

a[tetris->x][tetris->y 1]=b[2];

a[tetris->x-2][tetris->y 1]=b[3];

break;

}

case 19: //倒7字顺时针转270度方块

{

a[tetris->x-2][tetris->y]=b[1];

a[tetris->x 2][tetris->y 1]=b[2];

a[tetris->x 2][tetris->y]=b[3];

break;

}

}

}

//******分辨是不是移动*************************************************************************/

int if_moveable(struct Tetris *tetris)

{

if(a[tetris->x][tetris->y]!=0)//当核心方块部位上面有图案设计时,传参为0,即不能挪动

{

return 0;

}

else

{

if( //当以田字方块且除核心方块部位外,别的”口”字方块部位上无图案设计时,传参为1,就可以挪动

( tetris->flag==1 && ( a[tetris->x][tetris->y-1]==0 &&

a[tetris->x 2][tetris->y-1]==0 && a[tetris->x 2][tetris->y]==0 ) ) ||

//或为平行线方块且除核心方块部位外,别的”口”字方块部位上无图案设计时,传参为1,就可以挪动

( tetris->flag==2 && ( a[tetris->x-2][tetris->y]==0 &&

a[tetris->x 2][tetris->y]==0 && a[tetris->x 4][tetris->y]==0 ) ) ||

( tetris->flag==3 && ( a[tetris->x][tetris->y-1]==0 &&

a[tetris->x][tetris->y-2]==0 && a[tetris->x][tetris->y 1]==0 ) ) ||

( tetris->flag==4 && ( a[tetris->x-2][tetris->y]==0 &&

a[tetris->x 2][tetris->y]==0 && a[tetris->x][tetris->y 1]==0 ) ) ||

( tetris->flag==5 && ( a[tetris->x][tetris->y-1]==0 &&

a[tetris->x][tetris->y 1]==0 && a[tetris->x-2][tetris->y]==0 ) ) ||

( tetris->flag==6 && ( a[tetris->x][tetris->y-1]==0 &&

a[tetris->x-2][tetris->y]==0 && a[tetris->x 2][tetris->y]==0 ) ) ||

( tetris->flag==7 && ( a[tetris->x][tetris->y-1]==0 &&

a[tetris->x][tetris->y 1]==0 && a[tetris->x 2][tetris->y]==0 ) ) ||

( tetris->flag==8 && ( a[tetris->x][tetris->y 1]==0 &&

a[tetris->x-2][tetris->y]==0 && a[tetris->x 2][tetris->y 1]==0 ) ) ||

( tetris->flag==9 && ( a[tetris->x][tetris->y-1]==0 &&

a[tetris->x-2][tetris->y]==0 && a[tetris->x-2][tetris->y 1]==0 ) ) ||

( tetris->flag==10 && ( a[tetris->x][tetris->y-1]==0 &&

a[tetris->x-2][tetris->y-1]==0 && a[tetris->x 2][tetris->y]==0 ) ) ||

( tetris->flag==11 && ( a[tetris->x][tetris->y 1]==0 &&

a[tetris->x 2][tetris->y-1]==0 && a[tetris->x 2][tetris->y]==0 ) ) ||

( tetris->flag==12 && ( a[tetris->x][tetris->y-1]==0 &&

a[tetris->x][tetris->y 1]==0 && a[tetris->x-2][tetris->y-1]==0 ) ) ||

( tetris->flag==13 && ( a[tetris->x-2][tetris->y]==0 &&

a[tetris->x-2][tetris->y 1]==0 && a[tetris->x 2][tetris->y]==0 ) ) ||

( tetris->flag==14 && ( a[tetris->x][tetris->y-1]==0 &&

a[tetris->x][tetris->y 1]==0 && a[tetris->x 2][tetris->y 1]==0 ) ) ||

( tetris->flag==15 && ( a[tetris->x-2][tetris->y]==0 &&

a[tetris->x 2][tetris->y-1]==0 && a[tetris->x 2][tetris->y]==0 ) ) ||

( tetris->flag==16 && ( a[tetris->x][tetris->y 1]==0 &&

a[tetris->x][tetris->y-1]==0 && a[tetris->x 2][tetris->y-1]==0 ) ) ||

( tetris->flag==17 && ( a[tetris->x-2][tetris->y]==0 &&

a[tetris->x-2][tetris->y-1]==0 && a[tetris->x 2][tetris->y]==0 ) ) ||

( tetris->flag==18 && ( a[tetris->x][tetris->y-1]==0 &&

a[tetris->x][tetris->y 1]==0 && a[tetris->x-2][tetris->y 1]==0 ) ) ||

( tetris->flag==19 && ( a[tetris->x-2][tetris->y]==0 &&

a[tetris->x 2][tetris->y 1]==0 && a[tetris->x 2][tetris->y]==0 ) ) )

{

return 1;

}

}

return 0;

}

/******任意造成方块游戏种类的编号**********************************************************/

void get_flag(struct Tetris *tetris)

{

tetris->count ; //记牢造成格子的数量

srand((unsigned)time(NULL)); //复位随机数字

if(tetris->count==1)

{

tetris->flag = rand() 1; //记牢第一个格子的编号

}

tetris->next = rand() 1; //记牢下一个格子的编号

}

/******打印出方块游戏**********************************************************************/

void print_tetris(HANDLE hOut,struct Tetris *tetris)

{

for(i=0;i<4;i )

{

b[i]=1; //二维数组b[4]的每一个原素的值都为1

}

make_tetris(tetris); //制做方块游戏

for( i=tetris->x-2; i<=tetris->x 4; i =2 )

{

for(j=tetris->y-2;j<=tetris->y 1;j )

{

if( a[i][j]==1 && j>FrameY )

{

gotoxy(hOut,i,j);

printf(“□”); //打印出外框内的格子

}

}

}

//打印出菜单栏信息内容

gotoxy(hOut,FrameX 2*Frame_width 3,FrameY 1);

printf(“level : %d”,tetris->level);

gotoxy(hOut,FrameX 2*Frame_width 3,FrameY 3);

printf(“score : %d”,tetris->score);

gotoxy(hOut,FrameX 2*Frame_width 3,FrameY 5);

printf(“speed : %dms”,tetris->speed);

}

以上是共享给各位的方块游戏源代码,期待对各位有协助~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年5月2日 下午1:07
下一篇 2022年5月2日 下午1:09

相关推荐

  • 启动u盘制作工具哪个好(免费U盘制作工具推荐)

    在给电脑重装系统的时候我们都会用到u盘来重装,而要想用u盘重装就必须要先制作u盘启动盘,那么u盘启动盘制作软件哪个好呢?考虑到很多朋友还不了解u盘启动盘制作软件,所以接下来小编为大家带来了,感兴趣的小伙伴们快来看看吧 1、小白U盘启动制作工具-新手装机神器 小白一键重装系统,里面的功能应有尽有,是当下最流行、最方便快捷的U盘装系统和维护电脑的专用工具。用户的评论也是非常不错的,市场的占有率是非常的…

    2022年5月3日
    990
  • seo外链工具有哪些,seo自动发布外链工具盘点

    01前两天NeilPatel搞的免费SEO工具ubersuggest,更新了一个全新功能「contentideas」,我觉得非常好用。 不夸张地讲,从某种意义上,超越了付费工具buzzsumo,成为现在找KOL和热门文章的首选工具。 现在国外的SEO圈子都炸了。 很多人说,此功能一出,绝大多数做 martech(martech:营销技术,泛指营销工具)的公司都要倒闭。 有多好用呢? 举个例子,我在…

    2022年5月26日
    730
  • 如何制作程序界面,程序设计5个基本步骤

    小程序,大变革,小程序让传统实体店打开了一扇新的大门,创造了实体店移动化新机遇,小程序拉近了商家和客户之间的距离,小程序易用性已经被大家广泛使用,在小程序越来越火热的2020年,商家这么制作自己的小程序呢? 一、微信小程序开店最快捷的方式是成为某一个多商户小程序某个商家店铺,直接在微信端装修店铺,上传商品即可,免去了个人摸索的漫长过程,但缺点就是:小程序主体不是你的,只适合起步阶段,不适合后期扩大…

    2022年6月9日
    1090
  • 市场营销计划书的主要内容是什么,开拓市场的营销战略计划

    下面是某企业产品月度营销计划书和产品年度营销计划书,供读者参考。 需要资料的朋友可以私信【产品营销】给我,我会提供下载地址给您~

    2022年6月17日
    630
  • 十万元左右买什么车好,10万左右口碑最好的五款车

    随着气温回升,各地也开始有序复工,很多消费者在家憋了一个多月,经过疫情的影响,深刻意识到了一辆车的重要性,买车这个计划就被提前提上了日程。有一辆车的确非常便利,能够大大提升出行便捷和舒适性,但是消费要理性,今天小编就推荐5款车,最低六万多起售,个个都很有性价比,值得入手。 捷达VS5 指导价:8.48-11.28万 德系品质在很多消费者的眼中都是质量稳定的代名词,不过欢迎度高,很多德系品牌都存在溢…

    2022年9月19日
    1080
  • 网店转让平台哪个可靠,三个正规的网店转让平台推荐

    店铺转让有不少的平台,店铺转让有哪些平台?今日就由PChouse为你一一解答。 1、中国商铺网 中国商铺网创建于2002年,是一家专注于商铺出租、转让网络平台,为商铺业主提供免费交流的纯信息平台。公司和百度、赶集、58同城等多个网站建立了商铺信息的推广,目前开办了商铺门面、底商、服装服饰、招商项目等多个栏目。 2、淘铺网 淘铺网创建于2010年,是一家提供高效的租转门面、代理招商等服务,是专注于旺…

    2022年7月12日
    590
  • seo的优势有哪些,简述seo的优缺点

    有些人认为SEO做得再好,网站排名还是会排在“SEM竞价推广”的网站后面,这样就没有太大意义。但是这里要说明一点,如果花钱做推广无论哪方面都比SEO有优势,那么SEO就不会吸引这么多人做了。所以,SEO自然排名有推广(SEM竞价)无法比拟的好处,但同时也有其风险和缺点。 【SEO的缺点】 做SEO有个过程,不但要学习怎么做,而且将网站排名做好也需要一定的时间,可能要几个月甚至更长时间,这根据关键词…

    2022年5月26日
    630
  • 网站推广计划书范文,手把手教你策划网站推广

    互联网和移动互联网的结合使网络成为了更多商家和企业进行线上产品推广和销售的主要战场。对于企业来说,进行网络推广对于营销是十分有帮助的。好的开始等于成功的一半,那么怎样定制全面的网络推广计划呢? 思企互联介绍到,与完整的网络营销计划相比,网络推广计划是宏观的战略,然而更为具体。一般来说,网络推广计划至少应包含下列主要内容: 1、确定网络推广的阶段目标。如在发布后1年内实现每天独立访问用户数量、与竞争…

    2022年8月24日
    530
  • 百度推广多少钱一年,百度推广详细费用介绍

    因为百度推广占据了整个互联网推广百分之80的市场,所以很多公司或者个体都通过百度推广自己的产品。那么百度推广公司做排名的方法,百度推广一年多少钱,我们一定要清楚,如果花最少的钱得到最好的推广效果。我们看下哪些推广方式多少钱,哪些推广最省钱。 说到百度推广,百度竞价是百度官方的推广方式,因为百度就靠推广赚钱。我们做竞价的话,是按点击收费的。另外对于首次百度推广开户的客户,需要一次性缴纳5600元,其…

    2022年6月23日
    510
  • 手机微信数据恢复精灵免费版(2020官方正版免费下载)

    数据恢复对于小白来说永远是一个难解的问题,什么数据库,什么代码,什么语言等等,全是我们看不懂的字母。不过就像手机能够读取到这些我们看不懂的字母一样,微信聊天记录软件同样就可以读取这些字母,变成我们易懂的文字。 微信聊天记录删除了怎么恢复: 苹果手机微信聊天记录的恢复或许增加了恢复难度,不过既然是神操作,难题也就自然解决了。 恢复手机数据除了通过手机备份以外,我们还需要通过软件恢复,在电脑上下载。 …

    2022年10月24日
    590

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信