华为昇腾310嵌入式开发重力小球迷宫的部分源码

2024-01-15 01:28

本文主要是介绍华为昇腾310嵌入式开发重力小球迷宫的部分源码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

华为昇腾310开发板重力小球迷宫的部分源码

作者:爱写代码的刚子

时间:2024.1.11

前言:本篇博客是对学校嵌入式大实验的记录

void Ball_Point(int x,int y)
{DrawPoint(x-1,y-2);DrawPoint(x,y-2);DrawPoint(x+1,y-2);DrawPoint(x-2,y-1);DrawPoint(x-1,y-1);DrawPoint(x,y-1);DrawPoint(x+1,y-1);DrawPoint(x+2,y-1);DrawPoint(x-2,y);DrawPoint(x-1,y);DrawPoint(x,y);DrawPoint(x+1,y);DrawPoint(x+2,y);DrawPoint(x-2,y+1);DrawPoint(x-1,y+1);DrawPoint(x,y);DrawPoint(x+1,y+1);DrawPoint(x+2,y+1);DrawPoint(x-1,y+2);DrawPoint(x,y+2);DrawPoint(x+1,y+2);
}void Ball_Clear(int x,int y)
{ClearPoint(x-1,y-2);ClearPoint(x,y-2);ClearPoint(x+1,y-2);ClearPoint(x-2,y-1);ClearPoint(x-1,y-1);ClearPoint(x,y-1);ClearPoint(x+1,y-1);ClearPoint(x+2,y-1);ClearPoint(x-2,y);ClearPoint(x-1,y);ClearPoint(x,y);ClearPoint(x+1,y);ClearPoint(x+2,y);ClearPoint(x-2,y+1);ClearPoint(x-1,y+1);ClearPoint(x,y);ClearPoint(x+1,y+1);ClearPoint(x+2,y+1);ClearPoint(x-1,y+2);ClearPoint(x,y+2);ClearPoint(x+1,y+2);
}void DrawBlock(int x,int y)
{for(int i=x;i<x+8;i++){for(int j=y;j<y+8;j++){DrawPoint(i,j);}}
}void DrawMap()
{DrawBlock(24,0);    DrawBlock(32,0);DrawBlock(40,0);DrawBlock(56,0);DrawBlock(0,8);DrawBlock(8,8);DrawBlock(56,8);DrawBlock(24,16);DrawBlock(32,16);DrawBlock(40,16);DrawBlock(56,16);DrawBlock(0,24);DrawBlock(16,24);DrawBlock(24,24);DrawBlock(56,24);DrawBlock(16,32);DrawBlock(40,32);DrawBlock(0,40);DrawBlock(16,40);DrawBlock(32,40);DrawBlock(40,40);DrawBlock(56,40);DrawBlock(40,48);DrawBlock(56,48);DrawBlock(0,56);DrawBlock(8,56);DrawBlock(16,56);DrawBlock(32,56);DrawBlock(40,56);DrawBlock(56,56);}
void set_arr(int arr[][64])
{set_arr_block(arr,24,0);    set_arr_block(arr,32,0);set_arr_block(arr,40,0);set_arr_block(arr,56,0);set_arr_block(arr,0,8);set_arr_block(arr,8,8);set_arr_block(arr,56,8);set_arr_block(arr,24,16);set_arr_block(arr,32,16);set_arr_block(arr,40,16);set_arr_block(arr,56,16);set_arr_block(arr,0,24);set_arr_block(arr,16,24);set_arr_block(arr,24,24);set_arr_block(arr,56,24);set_arr_block(arr,16,32);set_arr_block(arr,40,32);set_arr_block(arr,0,40);set_arr_block(arr,16,40);set_arr_block(arr,32,40);set_arr_block(arr,40,40);set_arr_block(arr,56,40);set_arr_block(arr,40,48);set_arr_block(arr,56,48);set_arr_block(arr,0,56);set_arr_block(arr,8,56);set_arr_block(arr,16,56);set_arr_block(arr,32,56);set_arr_block(arr,40,56);set_arr_block(arr,56,56);
}void check_change(int*buff,float*buff_cur,int arr[128][64])
{if(abs((int)buff_cur[1]-(int)buff[1])>3||abs((int)buff_cur[0]-(int)buff[0])>3){if(buff_cur[0]>buff[0]){buff_cur[0]=buff[0]+2;}else{buff_cur[0]=buff[0]-2;}if(buff_cur[1]>buff[1]){buff_cur[1]=buff[1]+2;}else{buff_cur[1]=buff[1]-2;}}int flag=0;int flag2=0;if((int)buff_cur[1]-3<0)//x{int a=(int)buff_cur[1]-3;buff[1]=(int)buff_cur[1]-a;buff[0]=(int)buff_cur[0];flag=1;}if((int)buff_cur[0]-3<0)//y{int a=(int)buff_cur[0]-3;buff[0]=(int)buff_cur[0]-a;buff[1]=(int)buff_cur[1];flag=1;}if((int)buff_cur[1]+3>=128){int a=(int)buff_cur[1]-127;buff[1]=(int)buff_cur[1]-a;buff[0]=(int)buff_cur[0];flag=1;}   if((int)buff_cur[0]+3>=64){int a=(int)buff_cur[0]-63buff[0]=(int)buff_cur[0]-a;buff[1]=(int)buff_cur[1];flag=1;}if(flag)return;if(arr[(int)buff_cur[1]][(int)buff_cur[0]-3]==1){while(1){(int)buff_cur[0]++;if(arr[(int)buff_cur[1]][(int)buff_cur[0]-3]==0)break;  }buff[0]=(int)buff_cur[0];buff[1]=(int)buff_cur[1];flag2=1;}if(arr[(int)buff_cur[1]][(int)buff_cur[0]+3]==1){while(1){(int)buff_cur[0]--;if(arr[(int)buff_cur[1]][(int)buff_cur[0]+3]==0)break;  }buff[0]=(int)buff_cur[0];buff[1]=(int)buff_cur[1];flag2=1;}if(arr[(int)buff_cur[1]-3][(int)buff_cur[0]]==1){while(1){(int)buff_cur[1]++;if(arr[(int)buff_cur[1]-3][(int)buff_cur[0]]==0)break;  }buff[1]=(int)buff_cur[1];buff[0]=(int)buff_cur[0];flag2=1;}if(arr[(int)buff_cur[1]+3][(int)buff_cur[0]]==1){while(1){(int)buff_cur[1]--;if(arr[(int)buff_cur[1]+3][(int)buff_cur[0]]==0)break;  }buff[1]=(int)buff_cur[1];buff[0]=(int)buff_cur[0];flag2=1;}if(flag2)return;        buff[0]=buff_cur[0];buff[1]=buff_cur[1];
}
void Labyrinth()
{oled_init();adxl345_Init();int arr[128][64];set_arr(arr);int buff[3]={5,3,0};float buff_cur[3];while(1){ColorTurn(TURNOVER_COLOR);DisplayTurn(NORMAL_DISPLAY);DrawMap();Ball_Point((int)buff[1],(int)buff[0]);Refresh();Ball_Clear((int)buff[1],(int)buff[0]);adxl345_GetData(buff_cur);//修正check_change(buff,buff_cur,arr);}
}

给出部分源码是因为这个实验是在Ascend310项目之上的,调用了一些外设的接口,给出来是在是太麻烦,主要是提供思路。

作者其实还有一个实验,但是这个实验有参考价值。

这篇关于华为昇腾310嵌入式开发重力小球迷宫的部分源码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/607177

相关文章

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3