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

相关文章

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

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

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

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

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

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