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

devtools/2024/11/18 10:42:25/

文章目录

  • 🍊自我介绍
  • 🍊按键控制方块
    • 函数介绍
      • 获取当前时间函数
      • 生成随机数种子
      • 生成随机数函数
      • 示例用法
    • 方块图形方向功能设置
      • 生成随机图案
      • 擦除图形
      • 改变图形
      • 左移动
      • 右移动
      • 下移动


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


🍊自我介绍

  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;
}

http://www.ppmy.cn/devtools/104888.html

相关文章

后端微服务架构:构建分布式博客系统

后端微服务架构&#xff1a;构建分布式博客系统 在当今的软件开发领域&#xff0c;微服务架构已经成为构建可扩展、灵活且易于维护的应用程序的主流选择。本文将探讨如何利用微服务架构来设计和实现一个分布式的博客系统。 1. 微服务架构简介 微服务架构是一种将应用程序分解…

NC 最大正方形

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 给定一个由 ‘…

产品网络低价乱价,有哪些控价方法?

电商平台的兴起让产品销售渠道更加多元化&#xff0c;但同时也带来了价格混乱的问题。产品网络低价现象频发&#xff0c;不仅扰乱了市场秩序&#xff0c;损害了品牌形象&#xff0c; 还严重影响了正规渠道经销商的利益。针对这一问题&#xff0c;产品控价成为了企业和品牌方亟待…

探讨Facebook开户广告起充多少:全球标准与优势解析

在数字营销的时代&#xff0c;Facebook广告已成为全球企业进行品牌推广和市场拓展的重要工具之一。然而&#xff0c;对于许多初次接触Facebook广告的企业来说&#xff0c;开户广告的起充标准可能是一个常见的疑问。了解不同国家和地区的起充金额以及Facebook广告的相关优势&…

wordpress 页面URL自动跳转到图片地址?

比如你打开关于我们页面&#xff1a; yourdomain.com/about-us/ 结果自动跳转到了&#xff1a; yourdomain.com/wp-content/uploads/2024/08/about-us.jpg 刚开始以为是不是哪里设置了自动跳转&#xff0c;比如YOAST SEO里&#xff0c;但是结果发现不是。 结果发现&#x…

c++中的匿名对象及内存管理及模版初阶

目录 c中的匿名对象 日期到天数的转换 深入理解析构 深入理解拷贝构造 内存管理 全局变量和static变量的区别&#xff1b; malloc/calloc/realloc的区别 new和delete的意义&#xff1f; operator new与operator delete函数 对比malloc和new operator 定制operator ne…

ffmpeg源码分析(六)内存管理

系列文章目录 FFmpeg源码解析系列&#xff08;一&#xff09;目录和编译 FFmpeg源码解析系列&#xff08;二&#xff09;主要结构体 ffmpeg源码解析系列&#xff08;四&#xff09;结构体之AVIOContext 、URLContext、URLProtocol ffmpeg源码解析系列&#xff08;五&#xff0…

这一届“出道”的数字人,已经拿捧上了“铁饭碗”

文 | 智能相对论 作者 | 陈泊丞 好消息&#xff01;你心心念念的事业单位发录取公告了&#xff01; 坏消息&#xff01;他们没录你&#xff0c;录了个数字人。 图片来源网络 随着数字人技术的突破&#xff0c;越来越多的传统企业和机构开始用上了“数字员工”。 甚至很多中…