我正在做一些有趣的复古编程.我想要创建的是使用EGA图形的DOS游戏,但我在网上找到一个很好的参考有点麻烦.每个谈论做DOS编程的人都假设程序员会使用模式13h,虽然有些页面提到了其他图形模式,但我还没有找到一个讨论正确使用的模式.
这就是我现在要努力的方法:
//------------------------------------------------------------------------------
// DOS graphics test
//
// Thanks to the following links:
// http://gamebub.com/cpp_graphics.php
//
// Written for Digital Mars C compiler to be compiled as a DOS 16 bit binary.
//------------------------------------------------------------------------------
#include <dos.h>
#include <stdio.h>
#define SCREEN_WIDTH 320;
#define SCREEN_HEIGHT 200;
unsigned char far *vram = (unsigned char far *)0xA0000000L;
//------------------------------------------------------------------------------
void set_video_mode(unsigned char mode)
{
union REGS in, out;
in.h.ah = 0;
in.h.al = mode;
int86(0x10, &in, &out);
}
//------------------------------------------------------------------------------
void plot_pixel(unsigned int x, unsigned int …Run Code Online (Sandbox Code Playgroud) 我在通过终端在Mac OS X上运行基于pygame的应用程序时遇到问题.键盘之类的输入事件会转到终端而不是我的Python应用程序,并由pygame检测到.
例如,我有以下测试脚本:
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
done = False
while not done:
pygame.event.pump()
keys = pygame.key.get_pressed()
if keys[pygame.K_ESCAPE]:
done = True
if keys[pygame.K_SPACE]:
print "got here"
Run Code Online (Sandbox Code Playgroud)
当我从Mac OS X终端运行时,此脚本不会处理K_ESCAPE和K_SPACE,但终端将回显空格.
我正在运行pygame(py-game)的MacPorts端口,它取决于Python 2.4,我还使用python_select使python24成为活动版本.
我是Flex SDK的新手,并尝试使用Doug Mccune的CoverFlow小部件实现一个简单的项目.关于如何做到这一点的大部分文档都假设一个人正在使用Adobe的FlexBuilder产品,这是一个250美元的Eclipse插件,我宁愿避免购买.我遇到的问题只是让Doug的swc文件(他的组件库的二进制版本)被mxmlc(Flex SDK项目编译器)识别.我不断收到错误消息,例如
错误:无法解析为组件安装
和
错误:未找到类型或不是编译时常量:CoverFlow.
我也尝试过类型"VideoCoverFlow",因为我很确定这些类型是在Doug的lib中定义的.唉,我一直在搞清楚自己哪里出错了.
以下是我的mxml项目文件的全文,名为coverflow.mxml.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:local="*"
height="100%"
width="100%"
layout="absolute">
<local:CoverFlow
id="CoverFlow"
horizontalCenter="0"
verticalCenter="0"
borderThickness="10"
borderColor="#FFFFFF"
width="100%"/>
</mx:Application>
Run Code Online (Sandbox Code Playgroud)
我试图用以下命令编译它:
c:\flex_sdk_3\bin\mxmlc.exe -compiler.source-path=lib coverflow.mxml
Run Code Online (Sandbox Code Playgroud)
我也尝试将CoverFlow_lib.swc文件移动到与mxml文件相同的目录中,而不是使用source-path参数,但这似乎没有什么区别.
我很乐意去RTFM,如果有人能够如此友善地指出我正确的文档的方向.这里和这里有相关的Stack Overflow问题.
谢谢!
更新:我已将构建命令更改为以下内容:
mxmlc -library-path+=lib coverflow.mxml
Run Code Online (Sandbox Code Playgroud)
我也尝试了以下方法:
mxmlc -library-path+=CoverFlow_lib.swc coverflow.mxml
Run Code Online (Sandbox Code Playgroud)
使用与mxml文件相同的目录中的swc文件.但是,我仍然遇到同样的错误.
这里还有一个视频显示了我正在尝试使用的相同库,但是在Flex Builder中.不幸的是,它没有显示如何使用mxmlc.
我也试过简单地剥离我的mxml,
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:local="*" >
<local:VideoCoverFlow />
</mx:Application>
Run Code Online (Sandbox Code Playgroud) 我下载的源Launchy,我试图建立它在Visual Studio 2005中Launchy项目使用VC7内置,所以我不得不更新项目文件VC8和过程似乎进展顺利.然而,Launchy也使用了Boost 1.33.1库,而我构建的是Boost 1.41.0库(Boost的道具,使更新的库更容易构建),所以我也更新了项目以指向我的新提升库安装.现在我收到以下链接器错误:
fatal error LNK1104: cannot open file 'libboost_regex-vc80-mt-sgd-1_41.lib'
Run Code Online (Sandbox Code Playgroud)
我查看了Boost lib目录,我能找到的最接近的匹配是......
libboost_regex-vc80-mt-gd-1_41.lib
Run Code Online (Sandbox Code Playgroud)
注意缺少的's'.我不明白libs的区别是什么,以及Visual Studio是否正在寻找错误的东西,或者我的Boost构建过程是否无法构建正确的库.任何人都能指出我正确的方向吗?
作为一个实验,我制作了我所拥有的正则表达式lib的副本,并将其重命名为链接器正在寻找的内容.这给了我很长的关于已经在msvcrtd.lib中定义的符号的链接器错误列表,如下所示:
error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in libcmtd.lib(typinfo.obj)
Run Code Online (Sandbox Code Playgroud)
我将尝试构建Boost 1.33.1库并指向我的Launchy项目文件.但是我仍然想知道我的Boost 1.41.0库有什么问题.
编辑:我在Boost文档中找到了's'库的参考:
静态链接到C++标准库和编译器运行时支持库时,请使用此库.
所以看起来's'的库是正确的.现在我只需要弄清楚如何构建它们.
解决方案:我能够使用以下命令行构建缺少的升级库.
bjam --build-type=complete msvc stage
Run Code Online (Sandbox Code Playgroud)
我已经在升力生活的目录中运行了boostrap.bat之后运行了.
不知何故,直到今天我才注意到C++支持嵌套类.这让我感到惊讶,因为当我在90年代学习C++时,我特别记得嵌套类是Object Pascal和Java所具有的,但是C++没有.我问过一位老程序员朋友,他同意他回忆起C++没有嵌套类.
我对C++的回忆是不是错误的嵌套类,或者它们是否在过去的十五年中某些时候被添加到标准中?我尝试在Google上搜索有关此主题的信息,但我还没有提出任何有用的信息.
也可能是我正在考虑嵌套函数,Pascal当然支持这些函数,但C不支持.