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

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

黑神话,XSKY 星飞全闪单卷性能突破310万

当下,云计算仍然是企业主要的基础架构,随着关键业务的逐步虚拟化和云化,对于块存储的性能要求也日益提高。企业对于低延迟、高稳定性的存储解决方案的需求日益迫切。为了满足这些日益增长的 IO 密集型应用场景,众多云服务提供商正在不断推陈出新,推出具有更低时延和更高 IOPS 性能的云硬盘产品。 8 月 22 日 2024 DTCC 大会上(第十五届中国数据库技术大会),XSKY星辰天合正式公布了基于星

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta