C/C++编程新手入门基础系列:俄罗斯方块小游戏制作源代码

本文详述了使用C语言实现俄罗斯方块小游戏的过程,包括游戏窗口的创建、方块绘制、移动判断等关键步骤,提供完整源代码,适合初学者学习和参考。
摘要由CSDN通过智能技术生成

这篇文章主要为大家详细介绍了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)为两个端点画线。

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++交流群1053276368,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。

#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()

{

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值