本文主要是介绍实战项目:俄罗斯方块(四),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 🍊自我介绍
- 🍊按键控制方块
- 函数介绍
- 获取当前时间函数
- 生成随机数种子
- 生成随机数函数
- 示例用法
- 方块图形方向功能设置
- 生成随机图案
- 擦除图形
- 改变图形
- 左移动
- 右移动
- 下移动
你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~
🍊自我介绍
Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾” 和“内容共创官” ,现在我来为大家介绍一下有关物联网-嵌入式方面的内容。
🍊按键控制方块
在真正介绍之前,我们先认识一些随机函数的知识。
函数介绍
获取当前时间函数
#include <stdio.h>time_t time(time_t *tloc);
功能:获得从1970年到现在的秒数一般用法:
time_t t = time(NULL);
生成随机数种子
void srandom(unsigned int seed);功能:srandom设置产生一系列伪随机数发生器的起始点,一般常用时间作为起始点。生成随机数种子。参数:seed : 随机数产生器的初始值(种子值)。
生成随机数函数
long int random();
功能:会随机生成一个位于0 - RAND_MAX 之间的整数。
RAND_MAX 是<stdlib.h> 头文件中的一个宏,它用来指明 rand()所能返回的随机数的最大值。
不同系统RAND_MAX 的值不同。linux中它的值是16 * ((2^31)-1)
示例用法
#include <stdio.h>
#include <time.h>
#include <stdlib.h>int main()
{//产生随机数种子srandom((unsigned int)time(NULL));//生成10个随机数,[0,200)for(i = 0;i < 10;i++){k = random() % 200;//这样生成的数就在0-200之间了printf("k = %d\n",k);}return 0;}
方块图形方向功能设置
生成随机图案
int n_x = 6;
int n_y = 6;
int n_num;//图形选择
int n_mode;//图形变化形态选择
int n_color;//图形颜色void init_shape()
{srandom(time(NULL));n_num = random() % 7; //随机生成图形n_mode = random() % 4; //随机生成图形状态n_color = random() % 7 + 40;//随机生成图形颜色//在指定位置输出图形printf_mode_shape(n_num,n_mode,n_x,n_y,n_color);fflush(NULL);//刷新缓存
}
擦除图形
void eraser_shape(int n,int m,int x,int y)
{int i = 0;int xx = x;int yy = y;for(i = 0;i < 16;i++){if(i != 0 && i % 4 ==0){yy++;xx = x;}if(shape[n][m][i] == 1){printf("\033[%d;%dH \033[0m",yy,xx);}//[]占两个坐标点的位置xx += 2;}fflush(NULL);
}
改变图形
int change_shape()
{int m = (n_mode + 1) % 4;//生成一个新的形状eraser_shape(n_num,n_mode,n_x,n_y);n_mode = m;print_mode_shape(n_num,n_mode,n_x,n_y,n_color);return 0;
}
左移动
int move_left(int n_num,int n_mode)
{//消除原有图形,左移一个单位重新绘制eraser_shape(n_num,n_mode,n_x,n_y);n_x -= 2;print_mode_shape(n_num,n_mode,n_x,n_y,n_color);return 0;
}
右移动
int move_right(int n_num,int n_mode)
{//消除原有图形,右移一个单位重新绘制eraser_shape(n_num,n_mode,n_x,n_y);n_x += 2;print_mode_shape(n_num,n_mode,n_x,n_y,n_color);return 0;
}
下移动
int move_down(int n_num,int n_mode)
{//消除原有图形,下移一个单位重新绘制eraser_shape(n_num,n_mode,n_x,n_y);n_y += 2;print_mode_shape(n_num,n_mode,n_x,n_y,n_color);return 0;
}
这篇关于实战项目:俄罗斯方块(四)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!