实战项目:俄罗斯方块(四)


你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~


🍊自我介绍

  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;
}
  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值