资源简介
A*算法用于动态路径规划,实现功能:静态复杂环境下路径规划;简单地对地图分析并做出处理决策;动态环境下路径规划
代码片段和文件信息
#pragma once
#include
#include“resource.h“
#include
#include
using namespace std;
#define TWO(ab) (a<<16)+b
//////////////////////////////////////////
/******************公用数据*************/
HMENU hMenu;
#define BLACK 4
#define RED 33
#define WHITE 0
#define GREEN 1
#define BLUE 2
#define NUM 100
#define STEP 19 //STEP一点要大于3;
//#define EDGE (STEP/2-1)*2+1
struct Pos
{
int x;
int y;
int prex;
int prey;
void mem(){prex=x;prey=y;}
void now(int aint b){x=a;y=b;}
Pos(){x=y=prex=prey=0;}
};
static int cxClientcyClientprexpreymap[NUM][NUM]randxrandy;
static int countblockxblockyMovePainposMmove[20000]Rmovestepm;
static int ijextraxextraydbclckseed;
static HBRUSH hBrushwhite_Brushred_Brushgreen_brushblack_Brushblue_Brushyellow_Brush;
static HPEN white_penf_pen;
static char bu[30]buffer[20000];
static int posMAmoveA[20000]RmoveAstepmA;
#define MOVE 30
#define RAND 10
#define RANDA 11
CRITICAL_SECTION me;
static BOOL find;
int a[8][1];
static int Once;
static int prxpry;
static Pos RTRBLBLTCenterUp[STEP]Down[STEP]Right[STEP]Left[STEP];
///////////////////////////////////////////////////
static int x1y1x2y2;
///////////////////////////////////////////////
static int startxstartyendxendysavexsavey;
struct spaylist
{
int name_x;
int name_y;
int h;
int g;
int f;
spaylist * father;
spaylist * next;
};
static spaylist *spd_list;
static spaylist *open_list;
static spaylist *close_list;
static spaylist *temp;
static spaylist *ptemp;
static spaylist *pSpy;//初始化SPD表
static spaylist *pOpen;//初始化OPEN表
static spaylist *pClose;//初始化CLOSE表
static int klgtempoflagcflag;
/////////////////////////////////////////////////////////////
/*************引用函数**************************/
void WINAPI DrawR(HDC hdcHBRUSH hBrushint aint b)
{
if(a<0||a>=NUM||b<0||b>=NUM)return;
RECT temp;
Selectobject(hdchBrush);
temp.left=a*blockx;
temp.top=(b+1)*blocky;
temp.right=(1+a)*blockx;
temp.bottom=b*blocky;
FillRect (hdc &temp hBrush);
}
void WINAPI DrawL(HDC hdcHPEN hPenint aint b)
{
if(a<0||a>=NUM||b<0||b>=NUM)return;
Selectobject(hdchPen);
MoveToEx(hdca*blockx(b+1)*blockyNULL);
LineTo(hdca*blockxb*blocky);
LineTo(hdc(1+a)*blockxb*blocky);
LineTo(hdc(1+a)*blockx(b+1)*blocky);
LineTo(hdca*blockx(b+1)*blocky);
}
//////////////////////////////////////////////////////////////////////////////////////
int judopen(int nxint ny)//判定点是否在OPEN表中
{
spaylist *q1;
q1=open_list;
if(NULL==q1)return 0;
while((ny != q1->name_y || nx != q1->name_x )&& q1->next != NULL)q1=q1->next;
if(nx == q1->name_x && ny == q1->name_y)
{
ptemp=q1;return 1;
}
else
return 0;
}
int judclose(int nxint ny)//判定点是否在CLOSE表中
{
spaylist *q1;
q1 = close_list;
while((ny != q1->name_y ||nx != q1->name_x )&& q1->next != NULL)q1=q1->next;
if(nx == q1->name_x
- 上一篇:俄罗斯方块(黑白版)
- 下一篇:一个语法分析程序C语言
相关资源
- 自动解决智能拼图,A*算法+生成可解
- 用C++stl与QT实现的A*算法Demo
- C++实现A*算法十五数码问题
- 八数码问题数字华容道,九宫格深度
- 基于A*算法的十五数码程序 C语言版
- A*算法求解八数码--演示程序MFC
- A*算法 A star算法 C语言版
- A*算法vc++源码
- 人工智能 A*算法 八数码问题 C++ 报告
- 人工智能 八数码问题 A*算法 C语言
- 从广度优先搜索深度优先搜索A*算法多
- A*星算法matlab实现
-
利用ja
vasc ript在网页实现八数码启 - A*算法解决八数码问题C++
- A星算法,A*算法C++实现,8数码求解
- 迷宫问题A*算法
- 传教士野人渡河带界面
- A*算法 机器人路径规划
- A*算法解迷宫
- C语言实现A*算法解决传教士和野人渡
- C++实现8方向A*算法
- C++实现的高效A*算法
- 8数码游戏 A*算法 C++实现
- spath(A*算法的C语言源代码)
- A*算法、自动寻路算法C++源码
- A*算法在ROS上的简单移植
- ROS用A*算法源代码
评论
共有 条评论