使用c ++在Ubuntu上使用SDL熟悉OpenGL编程.经过一番环顾和实验,我开始明白了.我需要有关SDL键盘事件处理的建议.
我有一个第一人称相机,可以走路,后退,左右扫视,并使用鼠标环顾四周,这是伟大的.这是我的processEvents函数:
void processEvents()
{
int mid_x = screen_width >> 1;
int mid_y = screen_height >> 1;
int mpx = event.motion.x;
int mpy = event.motion.y;
float angle_y = 0.0f;
float angle_z = 0.0f;
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_ESCAPE:
quit = true;
break;
case SDLK_w:
objCamera.Move_Camera( CAMERASPEED);
break;
case SDLK_s:
objCamera.Move_Camera(-CAMERASPEED);
break;
case SDLK_d:
objCamera.Strafe_Camera( CAMERASPEED);
break;
case SDLK_a:
objCamera.Strafe_Camera(-CAMERASPEED);
break;
default:
break;
}
break;
case SDL_MOUSEMOTION:
if( (mpx == mid_x) && (mpy == mid_y) …Run Code Online (Sandbox Code Playgroud) 我正在尝试为某人提供一个"点击拨号"解决方案,如蓝牙设备,如手机.我一直试图使用32feet.net bluetooth api这样做.
我没有真正用蓝牙做任何事情(因为通过蓝牙串口发出命令的日子)但我已经配对有问题的设备,它支持pc的免提服务.我有以下代码尝试连接并发送拨号命令.
String deviceAddr = "11:11:11:11:11:11";
BluetoothAddress addr = BluetoothAddress.Parse(deviceAddr);
BluetoothEndPoint rep = new BluetoothEndPoint(addr, BluetoothService.Handsfree);
BluetoothClient cli = new BluetoothClient();
cli.Connect(rep);
Stream peerStream = cli.GetStream();
String dialCmd = "ATD 0000000000\r\n";
Byte[] dcB = System.Text.Encoding.ASCII.GetBytes(dialCmd);
peerStream.Write(dcB, 0, dcB.Length);
// Begin Edit ------------------------------------------------------------
Byte[] sResponse = new Byte[100];
peerStream.Read(sResponse, 0, 99);
TextBox1.Text = System.Text.Encoding.ASCII.GetString(sResponse);
// End Edit --------------------------------------------------------------
peerStream.Close();
cli.Close();
MessageBox.Show("Done");
Run Code Online (Sandbox Code Playgroud)
因为它似乎贯穿了这些代码行,所以在适当的时间连接相关的位置,如果设备地址错误且无法连接,则会崩溃.显然,AT命令不是发送它的正确方法.
任何人都可以通过免提配置文件告诉我可能需要发送到蓝牙设备以使其拨号吗?
开始编辑-------------------------------------------
我决定从流中读取并查看在发送AT命令后是否有任何类型的响应.由于我只是在测试是否可以使其工作,我只是将响应转储到文本框中.
我从流中读到的响应是:
ERROR
Run Code Online (Sandbox Code Playgroud)
似乎没有错误代码或任何东西.
结束编辑---------------------------------------------
编辑------------------------------------------------- -
发送命令:AT + CMER\r \n
结果:好的
然后
发送命令:AT + …
我正在使用Linux上的OpenGL和SDL从头开始构建一个3D游戏作为业余爱好,并了解有关这一编程领域的更多信息.
想知道在游戏运行时模拟时间的最佳方法.显然我有一个看起来像这样的循环:
void main_loop()
{
while(!quit)
{
handle_events();
DrawScene();
...
SDL_Delay(time_left());
}
}
Run Code Online (Sandbox Code Playgroud)
我使用SDL_Delay和time_left()来保持大约33 fps的帧速率.
我以为我只需要一些全局变量
int current_hour = 0;
int current_min = 0;
int num_days = 0;
Uint32 prev_ticks = 0;
Run Code Online (Sandbox Code Playgroud)
然后是一个函数:
void handle_time()
{
Uint32 current_ticks;
Uint32 dticks;
current_ticks = SDL_GetTicks();
dticks = current_ticks - prev_ticks; // get difference since last time
// if difference is greater than 30000 (half minute) increment game mins
if(dticks >= 30000) {
prev_ticks = current_ticks;
current_mins++;
if(current_mins >= 60) {
current_mins = …Run Code Online (Sandbox Code Playgroud) 我正在查看我的一个项目的一些代码,并考虑我用ajax调用的所有php页面,只运行一个简单的更新或插入查询,它让我思考.如果我基本上可以从javascript运行插入或更新sql查询,该怎么办?
假设我在服务器端使用ajax和php的原型javascript框架.
这会有用吗?
JS:
<script type="text/javascript">
// table is string containing table name
// fields is an array of field names
// values is an array of values
function mysql_insert(table,fields,values) {
var sql = "INSERT INTO " + table + "(";
for(i=0; i<fields.length; i++) {
sql = sql + "`"+fields[i]+"`";
}
sql = sql + ") VALUES (";
// purposefully used fields array in for loop so we get matching number of values
for(i=0; i < fields.length; i++) {
sql …Run Code Online (Sandbox Code Playgroud) 我正在尝试在word文档中搜索某些特定文本,然后将其替换为自定义表.我似乎几乎让它工作但它似乎将表格添加到前一个单词的中间而不是它找到文本的位置.
这是我的功能
public void AddTableAtCursor(string tabledata,
string find,
Boolean flh = true,
string name = "Table")
{
object replaceAll = Word.WdReplace.wdReplaceAll;
Word.Range srng = Application.ActiveDocument.Content;
srng.WholeStory();
srng.Find.ClearFormatting();
srng.Find.Text = find;
srng.Find.Replacement.ClearFormatting();
srng.Find.Replacement.Text = "";
int FirstChr = srng.Text.IndexOf(find);
if (FirstChr != -1)
{
Word.Range ts =
Application.ActiveDocument.Range(FirstChr, FirstChr);
this.Application.Selection.TypeParagraph();
srng.Find.Execute(
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref replaceAll, ref missing,
ref missing, ref missing, ref missing); …Run Code Online (Sandbox Code Playgroud)