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

这篇文章主要为大家详细介绍了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

相关推荐

  • 什么手机玩游戏最好,2020年超高性价比手机推荐

    随着手游市场不断扩大,目前的吸金能力甚至超越了PC端的网游,这也反映了大多数玩家对于手机游戏的认可。如今大多数年轻人开始更喜欢用手机游戏来消遣时间了,但是越来越好玩的游戏对于手机的性能要求也越来越高,那么今天就为手游玩家们推荐几款最适合打游戏的高性能手机。 OPPORenoAce 今年OPPO推出的性能最强的手机就当属OPPORenoAce了,它搭载了骁龙855Plus处理器,性能表现强劲。同时还…

    2022年7月27日
    620
  • 无线运动耳机哪个牌子好(200元左右高性价比的一款耳机推荐)

    手机耳机孔的消失无疑将蓝牙耳机带向了大众市场,其中以AirPods为代表的真无线耳机最为翘首。我曾经一度认为AirPods是无线耳机最完美的形态,它让我摆脱了线的干扰,打开即连,戴上即播放音乐,一切如此自然。直到这个月的某一天,我回到家,发现某一只耳朵的AirPods不翼而飞… 其实除了真无线耳机,蓝牙耳机还有很多形态,比如挂耳式、颈圈式、头戴式等等。谈起颈圈式蓝牙耳机,大家最先想到的大概是它…

    2022年9月10日
    760
  • js新开窗口怎么开启(html跳转另一个网页的代码)

    今天给大家分享vue3.x和electron11实现类似QQ顶部导航栏新开多窗口功能。 项目中的顶部弹窗用到了vue3自定义组件v3layer和electron新建窗口两种方式。 如上图:通过v3layer来实现弹窗功能。 vue3.0系列:Vue3自定义PC端弹窗组件V3Layer <!–……设置模板–> <v3-layerv-model="isShowSettingLay…

    2022年5月11日
    970
  • 微信号怎么加好友,微信快速加好友软件分享

    朋友认识,都会留个联系方式,方便联络和交流,过去是写个地址,然后留个电话,到现在最常用的,“来,加个微信吧”。 今天我们来分享一下,添加微信好友的2种方式。 方式一:扫码加好友 我们常说扫码扫码,这个码说的就是二维码,每个人的微信号都有一个独立的二维码,大家可以把这个二维码理解为微信给每个人发的一个小身份证。 扫码加好友是两个人操作,老张必须把自己的二维码,就是这个小身份证调出来,老陈用“扫一扫”…

    2022年7月28日
    820
  • 小区做什么小买卖赚钱,六个最受欢迎的小区生意

    随着时代的发展,人们的生活水平逐渐的提高,尤其是在物质要求上,都追求完美,对外在形象也更加注重,这就使得更换衣服的频率相当的快,而添置衣服不再是为了单纯的需要,更多的是为了追求时尚。 因此,导致淘汰下来非常多的旧衣服。每年每个城市都有数亿吨的废衣服要处理,所以“旧衣物回收”就成为了一个非常暴利的行业。 绿色铁皮旧衣物回收箱 在老一辈等人心里,往往有着“新三年旧三年,缝缝补补又三年”的观念,毕竟,在…

    2022年8月30日
    500
  • 腾讯游览器怎么下载,2019最新版免费安装

    1QQ浏览器9.0内置速度最快Chromium43内核回顶部 经过10年的磨砺,被认为是QQ浏览器史上最好用版本的QQ浏览器9.0终于上市了。QQ浏览器9.0正式版,内置目前速度最快的Chromium43极速引擎(浏览器内核),回归最适合中国使用的“双核”上网模式,让极速和兼容不再二选一;并且去掉杂乱无章的多余功能,保留最简洁的界面,让QQ浏览器做到多开网页依然流畅同时不占内存;当然,QQ浏览器9…

    2022年8月4日
    930
  • 网站被流量攻击怎么办,网站漏洞修复教程

    当你的网站有流量访问,就说明你的网站排名比较靠前,宣传方面做得好,但是同时也需要注意,如果出现过多的流量访问时,有可能是一种流量攻击。网站排名好的话,十分容易引起别的竞争者的嫉妒,从而就会对网站采取一些破坏,而这其中就包括流量攻击。而网站在受到流量攻击时可以选择服务器托管。 其实互联网的安全问题近来受到了颇多热议,小编记得去年底曾发生了引发广大互联网用户人心惶惶的一起恶劣的病毒感染事件,"勒索病毒…

    2022年7月27日
    570
  • 水果店怎么经营比较好,做到这七点保准越做越大

    如何开一家赚钱的水果店呢?根据我对很多成功水果店老板的访谈交流,总结以下这些新手开水果店必备经营技巧点,跟我来学学吧! 第一,先要选好水果店店址,这一点非常重要! 建议最好选择车站、机场,码头、菜市场、街道,医院等附近比较显眼的地方。车站、机场,码头的特点就是旅客多,人流量大,而且这些旅客由于忙着赶时间,购买水果也没时间讨价还价;至于医院,很多去看望病人的家属及亲朋好友都愿意在医院附近买水果,毕竟…

    2022年10月8日
    560
  • 微信怎么找回删除的好友,误删好友一键恢复教程

    生活中一气之下删除微信好友的情况并不少见: 例如喝醉酒糊里糊涂就删除了某个微信好友; 例如和朋友打游戏发生口角一言不合就删除了; 不开心和男朋友闹分手分分钟就把他删除了; 可是等到冷静下来,大部分人又开始后悔自己过于冲动,想要找回已删除的微信好友。那么已删除的微信好友如何找回呢? 如果你有对方的手机号或者微信号,那么很简单,打开微信添加好友,通过手机号码和微信账号就可以重新搜索该好友,并且重新添加…

    2022年6月9日
    1430
  • 牛仔外套穿大好还是小好,收下这六个选购技巧吧

    【一牛仔外套对肤色的影响】 浅色牛仔——能在一定程度上提亮肤色。 深色牛仔——会让你的肤色偏橘 【二牛仔外套的显瘦效果】 显瘦:如果是一般的牛仔外套,剪裁上都能达到显瘦的效果,相对来说,浅色的效果会弱一些,但差别并不是很大。前短后长的剪裁能让上身缩水哦!(显瘦效果很好) 【三身材不同,选的的牛仔外套也不同】 身材偏胖的人:浅色牛仔外套是这样的感受。视觉上拉宽上半身,尤其是肩膀。 【四背带牛仔裤】 …

    2022年10月10日
    3380

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信