如何使用vs来运行box2d中Testbed的案例

article/2025/10/23 8:49:23

0 环境

vs: vs2012
box2d: Box2D_v2.1.2

1 得到box2d编译版本

可以参考:
https://blog.csdn.net/sty945/article/details/83823976

现在我们得到一个可以用vs2012打开的box2d版本,用vs2012打开如下图所示:
在这里插入图片描述

2 运行Testbed的项目

在这里插入图片描述将testbed项目设置成启动项目,然后F7编译, Ctrl+F5运行就可以得到如下界面:
在这里插入图片描述

我们可以做一些演示练习

3 基于Testbed项目编写程序

推荐一个box2d教程:
http://ohcoder.com/blog/categories/box2d-tutorials/

我们如何编写自己的程序呢?
在vs2012中直接添加文件是不对的,添加文件只会添加到build目录下,必须要和原始文件在同一目录下才可以,以下是我采用的方法:

3.1 采用vscode打开源代码

路径是…\Box2D_v2.1.2\Box2D文件夹,会得到如下的界面:
在这里插入图片描述

3.2 打开testbed文件夹

在这里插入图片描述

3.3 创建测试

Testbed/Tests文件夹下面,添加自己创建的.h头文件,如创建一个FooTest.h,写入如下内容:

#ifndef FOO_TEST_H
#define FOO_TEST_H#define DEGTORAD 0.0174532925199432957f
#define RADTODEG 57.295779513082320876fclass FooTest: public Test
{public:b2Body* dynamicBody;FooTest(){b2BodyDef myBodyDef;myBodyDef.type = b2_dynamicBody;//start 10 units further to the right, 20 units highermyBodyDef.position.Set(0, 20);myBodyDef.angle = 0;// b2Body* dynamicBody = m_world->CreateBody(&myBodyDef);dynamicBody = m_world->CreateBody(&myBodyDef);b2PolygonShape boxShape;boxShape.SetAsBox(2, 1);b2FixtureDef boxFixtureDef;boxFixtureDef.shape = &boxShape;boxFixtureDef.density = 1;dynamicBody->CreateFixture(&boxFixtureDef);//change the starting position and angledynamicBody->SetTransform(b2Vec2(10, 20), 1);// set the linear velocity and angular velocity of the bodydynamicBody->SetLinearVelocity(b2Vec2(-5, 5));dynamicBody->SetAngularVelocity(-90 * DEGTORAD);//static BodiesmyBodyDef.type = b2_staticBody;myBodyDef.position.Set(0, 10);b2Body* staticBody = m_world->CreateBody(&myBodyDef);staticBody->CreateFixture(&boxFixtureDef);//kinematic bodymyBodyDef.type = b2_kinematicBody;myBodyDef.position.Set(-18, 11);b2Body* kinematicBody = m_world->CreateBody(&myBodyDef);kinematicBody->CreateFixture(&boxFixtureDef);kinematicBody->SetLinearVelocity(b2Vec2(1, 0));kinematicBody->SetAngularVelocity(360 * DEGTORAD);};void Step(Settings* setttings){Test::Step(setttings);m_debugDraw.DrawString(5, m_textLine, "now we have a foo test");m_textLine += 15;b2Vec2 pos = dynamicBody->GetPosition();float angle = dynamicBody->GetAngle();b2Vec2 vel = dynamicBody->GetLinearVelocity();float angularvel = dynamicBody->GetAngularVelocity();m_debugDraw.DrawString(5, m_textLine, "Position:%.3f,%.3f Angle:%.3f", pos.x, pos.y, angle*RADTODEG);m_textLine += 15;m_debugDraw.DrawString(5, m_textLine, "Veloctiy:%.3f, %.3f Angular velocity:%.3f", vel.x, vel.y, angularvel * RADTODEG);m_textLine += 15;for (b2Body* b = m_world->GetBodyList(); b; b = b->GetNext()){b2Vec2 pos1 = b->GetPosition();m_debugDraw.DrawString(5, m_textLine, "Position:%.3f,%.3f", pos1.x, pos1.y);m_textLine += 15;}}static Test* Create(){return new FooTest;}
};#endif

然后在同一目录下的TestEntries.cpp文件添加如下两行代码:

#include "FooTest.h"{"Foo test", FooTest::Create},

在这里插入图片描述

3.4 运行测试

在vs2012中编译运行,会出现如下界面:
在这里插入图片描述
第一个演示的就是我们刚才编写的程序。
基于此就可以根据教程:
http://ohcoder.com/blog/categories/box2d-tutorials/
基于学习Box2D了


http://chatgpt.dhexx.cn/article/8jWxk4sr.shtml

相关文章

testbed常见问题及处理(2)

1.已经将定义全局变量(或者定义类型)的头文件添加到头文件搜索路径,仍提示变量未定义(或类型未定义) 原因:可能是由于最初分析时未指定头文件搜索路径,或者指定的路径不正确,导致未搜索到头文件…

一张表带你了解自动化测试工具Parasoft VS TestBed

你知道测试金字塔吗? 为了用开发实践来扩大测试规模,如何以正确的数量设计合适类型的自动化测试?测试金字塔是一个很好的指南! 测试金字塔是一个很好的视觉隐喻,它描述了不同的测试层,以及每一层要做多少…

testbed 桩函数设置

testbed 桩函数设置 单元测试时,为了隔离各个函数,方便测试,通常我们会在被测函数中将调用函数进行打桩。 我们可以为打桩函数设置(如果桩函数调用多次,这设置值用逗号分隔,每次调用使用序列中的一个值&…

testbed笔记:头文件里的函数

testbed笔记:头文件里的函数 问题 头文件里的函数不会展现在这里: 解决办法: 在下面位置 右键这里,选择file view display level 勾选full analysis

testbed软件测试技巧,基于LDRA Testbed 软件的单元测试

摘要:LDRA Testbed测试工具辅助完成稿可靠性的军用软件测试工作,文章对LDRA Testbed 的分析并进行单元测试,阐述了LDRA Testbed在软件测试中的作用。文章针对测试的对象进行了需求分析并形成报告,构建测试用例并对如何查看和分析动态覆盖率测试报告做了阐述。证明合理的使用…

SONiC testbed

熟悉一下如何测试,并且查看一些测试配置。文章参照Ansible Playbooks for Testing SONiC。 物理拓扑 上图中的各个硬件介绍 testbed servers是用来跑测试用例的。root fanout switch是根交换机。leaf fanout switches是用来连接被测试交换机。DUTs是指被测试的交换机…

软测工具Testbed的使用以及动态测试实例

基于大连理工大学软件测试与质量保证实验 1,软件与环境安装 由于该版本的Testbed是测试版本,有一定的使用期限。所以最好是下载到虚拟机里面然后使用之前用快照还原状态。当然直接下载到电脑里可以,但注意在使用期限内完成实验。 下载如图…

testbed常见问题及处理(1)

1.序列名不规范 为了工程化的管理测试用例,单元测试时,建议为每个被测函数(uut)创建一个序列,而序列名使用函数名,以便后期维护管理。 2.未确认代码是否编译通过,就开始测试 应当在确定代码编译…

Testbed静态分析

使用testbed进行代码的静态分析主要有四个步骤: 选择分析对象 分析前的设置 分析项的选择与分析过程 查看分析结果 1、选择分析对象 可通过两种方式选择被分析对象:单个文件分析、以集(set)的形式分析,其中以set…

Testbed单元测试

在testbed中C代码中的"单元"指的是一个函数,单元测试就是针对每个函数进行测试。 在使用testbed进行单元测试前需要先确认当前使用的编译器是否正确,且current compiler和default compiler是否是一致的。如果当前编译器不正确,可点…

中山大学2019年研究生复试机试题目(数据科学与计算机学院)

\qquad 本人在2019年9月参加了中山大学数据科学与计算机学院的推免面试,将模拟机试的题目记录如下。(正式机试时有原题出现) 小伙伴们复试加油哇!!!!! \qquad 详细内容已放进网盘&am…

关于我考研的这一年随记 —— 2022暨南大学电子信息计算机技术专业初试第三复试第一

出成绩了,初试第三,复试第一,成功圆梦。这一刻,我与17岁的自己和解。四年前的遗憾终于在今天得到了圆满。这一路走来,我迷茫、焦虑、惶恐与不安,似乎对自己的执念有一股莫名的冲动和那么一丝后怕。出成绩前…

中山大学软件工程专硕考研经验(双非跨考)

我是一名双非医科大学的本科生,因为不是很喜欢这个专业,并且对计算机感兴趣(喜欢写代码),最后就决定跨考计算机了。为什么选择中大呢?说来话长,很多人可能觉得我自不量力,双非跨考还…

2023中山大学计算机考研经验分享

最新数据见:中山大学考研经验分享历年真题_N诺计算机考研 中山大学数据科学与计算机学院官网 中山大学人工智能学院:http://sai.sysu.edu.cn/ 中山大学软件学院:http://sse.sysu.edu.cn/ 中山大学系统科学与工程学院 :http://sss…

【计算机考研院校推荐】广东地区汇总-22考研版

本篇文章由皮皮灰收集 数据来源21考研,仅供22考研参考 收集招生081200 计算机科学与技术、083500 软件工程、083900 网络空间安全、085400 电子信息-计算机方向的院校 更为详细的院校信息可在后台回复获取 广东地区院校目录 1.(10558)中山大学【985/211】 2…

2023 暨南大学计算机专硕(电子信息计算机技术方向)考研经验分享

文章目录 前言数学二专业课 848英语二政治复试杂七杂八考试地点与考试方式作息坐姿群848 资料 总结 前言 2023 年暨南大学计算机专硕考生(电子信息计算技术方向),初试成绩 392 分(复试线 344 分)。非常感谢前人的经验…

2020暨南大学计算机考研经验分享

前言: 主要介绍了今年暨南大学计算机考研的相关情况、848真题的部分回忆内容、自己的一些经验教训,还有复试名单拟录取名单等第一手资料,文章很长,可以只看自己目标专业的情况和真题部分。 一、个人情况介绍 报考的是暨南大学电子…

2022年中山大学计算机考研复试分数线预测

中山大学属于34所自划线院校之一,考研复试分数线分国家线和院校自划线,院校自划线公布时间一般早于国家线,报考中山大学计算机研究生的考生,复试分数线请以院校官网公布的分数线为准! 2021年中山大学计算机考研复试分数线公布日期…

中山大学计算机考研资料汇总

中山大学数据科学与计算机学院官网 中山大学(Sun Yat-sen University, SYSU),简称“中大”,由孙中山先生创办,有着一百多年办学传统,是中国南方科学研究、文化学术与人才培养的重镇。中山大学是教育部和广…

考研 | 2020中山大学软件工程/计算机考研初试经验分享

考完很久了,心血来潮写个经验贴,由于今年线上复试,与往年形式差异很大,而且题目难易程度差异很大,抽到什么题全看运气,所以不太想写复试的经验贴,如果有小伙伴想看的话可以留言~ 1 关于我 1.1 …