华为昇腾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

相关文章

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问