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

2024-09-02 16:12
文章标签 实战 项目 方块 俄罗斯

本文主要是介绍实战项目:俄罗斯方块(四),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

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


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


🍊自我介绍

  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.chinasem.cn/article/1130442

相关文章

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步