在头文件中初始化我收到以下错误:
invalid in-class initialization of static data member of non-integral type 'bool [8]'
Run Code Online (Sandbox Code Playgroud)
如果我尝试在.cpp中初始化,我得到:
'bool Ion::KeyboardInput::key [8]' is a static data member; it can only be initialized at its definition
Run Code Online (Sandbox Code Playgroud)
继承人标题:
enum MYKEYS {
KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT, KEY_W, KEY_S, KEY_A, KEY_D
};
class KeyboardInput
{
public:
KeyboardInput();
~KeyboardInput();
static void getKeysDown(ALLEGRO_EVENT ev);
static void getKeysUp(ALLEGRO_EVENT ev);
static bool getKey(int keyChoice);
private:
static bool key[8] = {false, false, false, false, false, false, false, false};
};
Run Code Online (Sandbox Code Playgroud) 我将macOS更新为Sierra,并且我的一些文件消失了。最重要的是Allegro的图书馆。我正在尝试再次安装它,就像我第一次看到的视频(https://www.youtube.com/watch?v=UJtmJfWNTJY)一样,但是显示了以下错误消息:
'$Users/macbookpro/Downloads/allegro/include/allegro5/platform/alosx.h:43:12: fatal error:
'QuickTime/QuickTime.h' file not found'
#import <QuickTime/QuickTime.h>
Run Code Online (Sandbox Code Playgroud)
我进行了搜索,发现这只是Xcode中的更改参数,但是,尽管使用了终端,但我没有使用Xcode来编译我的代码。有什么提示吗?
我正在使用快艇5进行我的第一场比赛,这是一场蛇比赛.为了移动蛇游戏,我想使用我制作的方格,所以蛇会定期移动.
如何使用计时器在一定时间内发生事件?
例如,我希望我的蛇在方向设置中每秒移动一次,我知道如何控制他,但我不知道如何创建一个以某个间隔发生的事件.我在Windows XP SP3上使用Codeblocks IDE
我正在尝试使用Clion IDE编译我的游戏项目但是在移植allegro 5时遇到了问题.我收到此错误:
main.cpp:2:10: fatal error: 'allegro/allegro.h' file not found
#include <allegro/allegro.h>
Run Code Online (Sandbox Code Playgroud)
我的CMakeLists是:
cmake_minimum_required(VERSION 3.5)
project(testAllegro)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
add_executable(testAllegro ${SOURCE_FILES})
INCLUDE_DIRECTORIES( /usr/local/include )
LINK_DIRECTORIES( /usr/local/lib )
file(GLOB LIBRARIES "/usr/local/Cellar/allegro/5.2.1.1_1/lib/*.dylib")
message("LIBRARIES = ${LIBRARIES}")
TARGET_LINK_LIBRARIES(testAllegro ${LIBRARIES})
Run Code Online (Sandbox Code Playgroud)
我想问一下如何将外部图书馆的快板添加到Clion?
为了使用allegro 5编译代码,我需要添加到g ++中的标志是什么?我试过了
g++ allegro5test.cpp -o allegro5test `allegro-config --libs`
Run Code Online (Sandbox Code Playgroud)
但那不起作用.我正在使用ubuntu 11.04.我使用http://wiki.allegro.cc/index.php?title=Install_Allegro5_From_SVN/Linux/Debian上的说明安装了allegro 5
我试过了:
g++ allegro5test.cpp -o allegro5test `allegro-config --cflags --libs`
Run Code Online (Sandbox Code Playgroud)
它还提供了一堆未定义的错误,例如:对"al_install_system"的未定义引用
allegro-config --cflags --libs 输出:
-I/usr/local/include
-L/usr/local/lib -lalleg
Run Code Online (Sandbox Code Playgroud) 你必须喜欢链接器错误*讽刺*.无论如何,我正在使用pspsdk附带的allegro的psp端口开发一个psp游戏.在我修复了所有其他未定义的引用之后,这个引起了我的注意.完整的错误消息和makefile和代码如下:
错误详情
1>------ Build started: Project: PSP Pong, Configuration: Debug Win32 ------
1> psp-g++ -I. -IC:/pspsdk/psp/sdk/include -O2 -G0 -Wall -I. -IC:/pspsdk/psp/sdk/include -O2 -G0 -Wall -fno-exceptions -fno-rtti -D_PSP_FW_VERSION=150 -c -o main.o main.cpp
1> psp-gcc -I. -IC:/pspsdk/psp/sdk/include -O2 -G0 -Wall -D_PSP_FW_VERSION=150 -L. -LC:/pspsdk/psp/sdk/lib main.o -lalleg -lpspgu -lpspirkeyb -lm -lpsppower -lpspaudio -lpsprtc -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lc -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -o main.elf
1> c:/pspsdk/bin/../lib/gcc/psp/4.3.5/../../../../psp/lib/crt0.o: In function `_main':
1> ../../../../pspsdk/src/startup/crt0.c (86) : undefined reference to `main'
1> C:\pspsdk\bin\make: *** …Run Code Online (Sandbox Code Playgroud) 我正在使用Allegro 5中的第一个游戏,我已经有了标题菜单渲染,但是我想在菜单中添加可点击的文本.如何将其设置为当您将鼠标悬停在文本上时可以单击它?我正在考虑使用for语句检查像素对性能非常不利,这是我到目前为止所做的:
#include <allegro5\allegro.h>
#include <allegro5\allegro_image.h>
#include <allegro5\allegro_primitives.h>
const int width = 1280;
const int height = 720;
int main(void)
{
al_init();
al_init_primitives_addon();
al_init_image_addon();
ALLEGRO_DISPLAY *display = al_create_display(width, height);
ALLEGRO_BITMAP *title = al_load_bitmap("titlemenu.bmp");
al_clear_to_color(al_map_rgb(0, 0, 0));
al_draw_bitmap(title, 0, 0, 0);
al_flip_display();
al_rest(3.0);
al_destroy_display(display);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Windows XP SP3上的代码块
所有,
我已经构建了一个漂亮的演示应用程序,它将我们内部系统的数据显示为全屏"广告牌"样式显示.您可以将此视为显示国家赤字的应用程序 - 快速增加的数字,整天快速动画.
问题是该演示工作非常好,客户希望我建立一个工业强度版本!
我想做到这一点在C++中,但它可能是Java或也许 C#(虽然我不喜欢使用C#,因为我在ENV我没有那么强烈).
我正在玩SDL或Allegro,但我也没有任何经验,所以我对那里最好的(也是最理想的)工具包持开放态度.
当我说"iPhone"风格时,我的意思是面板之间简单而优雅的过渡.iPhone可以很好地使用幻灯片,淡入淡出和混合.我的应用不需要做任何3D风格的动画.在图形方面,我真的只需要简单的东西:90%的文本,一些图像,以及简单的图元,如线条,矩形和渐变填充.
当然,我可以在"普通的旧"DirectDraw或OpenGL中实现它,但我真的不想考虑编写计时器类和为动画选择计时方法 - 一些工具包应该是正确的.
谢谢你的帮助!
RF
此方法导致中止错误:"map/set iterator not incrementable."
由于在if失败之后并且确定应该擦除的虚拟迭代器(并且是),继续到映射中的下一个迭代器++_iter失败,因为_iter它不再是有效的对象/指针.
迭代地图的正确程序是什么,并且能够在整个过程中删除单个项目?
typedef std::map<std::string, BITMAP*> MapStrBmp;
typedef MapStrBmp::iterator MapStrBmpIter;
\\...
void BitmapCache::CleanCache() {
//Clean the cache of any NULL bitmaps that were deleted by caller.
for(MapStrBmpIter _iter = _cache.begin(); _iter != _cache.end(); ++_iter) {
if(_iter->second != NULL) {
if((_iter->second->w < 0 && _iter->second->h < 0) == false) continue;
}
_cache.erase(_iter);
}
}
Run Code Online (Sandbox Code Playgroud) 这个函数中的代码是不是特定于重构循环?没有我能想到的可以准确再现所需结果的算法.
bool Mouse::CreateDefaultImage() {
if(_defaultImage != nullptr) return false;
const int DEPTH = 32;
const int WIDTH = 11;
const int HEIGHT = 19;
_defaultImage = create_bitmap_ex(DEPTH, WIDTH, HEIGHT);
if(_defaultImage == nullptr) return false;
const int BLACK = 0x000000;
const int WHITE = 0xFFFFFF;
const int PINK = 0xFF00FF;
//Color bitmap to transparent
clear_to_color(_defaultImage, PINK);
//Only color areas that are NOT transparent.
//Each block is a row of pixels.
/************************************************************************
* SHOULD PRODUCE THIS RESULT * = BLACK; 0 = …Run Code Online (Sandbox Code Playgroud) allegro ×10
c++ ×9
allegro5 ×3
macos ×2
2d ×1
animation ×1
class ×1
clion ×1
cmake ×1
codeblocks ×1
g++ ×1
installation ×1
iterator ×1
macos-sierra ×1
makefile ×1
oop ×1
refactoring ×1
sdl ×1
stdmap ×1
xcode ×1