社区首页 >问答首页 >C++游戏循环示例

C++游戏循环示例
EN

Stack Overflow用户
提问于 2010-06-12 17:39:59
回答 4查看 16K关注 0票数 3

有人能为一个只有一个“游戏循环”的程序写一个源代码吗?这个循环会一直循环下去,直到你按下Esc键,然后程序会显示一个基本的图像。这是我现在拥有的源代码,但我必须使用SDL_Delay(2000);来保持程序存活2秒,在此期间程序被冻结。

代码语言:javascript
代码运行次数:0
复制
#include "SDL.h"

int main(int argc, char* args[]) {

    SDL_Surface* hello = NULL;
    SDL_Surface* screen = NULL;

    SDL_Init(SDL_INIT_EVERYTHING);

    screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);

    hello = SDL_LoadBMP("hello.bmp");

    SDL_BlitSurface(hello, NULL, screen, NULL);

    SDL_Flip(screen);

    SDL_Delay(2000);

    SDL_FreeSurface(hello);

    SDL_Quit();

    return 0;

}

我只想让程序一直打开直到我按Esc键。我知道循环是如何工作的,只是不知道我是在main()函数内部还是外部实现。我都试过了,两次都失败了。如果你能帮我,那就太好了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-12 17:51:00

尝试过类似这样的东西

代码语言:javascript
代码运行次数:0
复制
  SDL_Event e;
  while( SDL_WaitEvent(&e) )
  {
    if (e.type == SDL_KEYDOWN && e.key.keysym.sym == SDLK_ESCAPE) break;
  }

?您可以在那里找到许多教程和示例;只有一个fast-search example

补充说::WaitEvent“冻结”了程序,所以你什么也做不了。您只需等待;还可以使用其他等待技术(例如PollEvent,或者在计时器初始化后再次使用WaitEvent )。

票数 2
EN

Stack Overflow用户

发布于 2010-06-12 18:03:33

下面是一个完整的工作示例。除了使用帧时间调节之外,您还可以使用SDL_WaitEvent。

代码语言:javascript
代码运行次数:0
复制
#include <SDL/SDL.h>
#include <cstdlib>
#include <iostream>

using namespace std;

const Uint32 fps = 40;
const Uint32 minframetime = 1000 / fps;

int main (int argc, char *argv[])
{

  if (SDL_Init (SDL_INIT_VIDEO) != 0)
  {
    cout << "Error initializing SDL: " << SDL_GetError () << endl;
    return 1;
  }

  atexit (&SDL_Quit);
  SDL_Surface *screen = SDL_SetVideoMode (640, 480, 32, SDL_DOUBLEBUF);

  if (screen == NULL)
  {
    cout << "Error setting video mode: " << SDL_GetError () << endl;
    return 1;
  }

  SDL_Surface *pic = SDL_LoadBMP ("hello.bmp");

  if (pic == NULL)
  {
    cout << "Error loading image: " << SDL_GetError () << endl;
    return 1;
  }

  bool running = true;
  SDL_Event event;
  Uint32 frametime;

  while (running)
  {

    frametime = SDL_GetTicks ();

    while (SDL_PollEvent (&event) != 0)
    {
      switch (event.type)
      {
        case SDL_KEYDOWN: if (event.key.keysym.sym == SDLK_ESCAPE)
                            running = false;
                          break;
      }
    }

    if (SDL_GetTicks () - frametime < minframetime)
      SDL_Delay (minframetime - (SDL_GetTicks () - frametime));

  }

  SDL_BlitSurface (pic, NULL, screen, NULL);
  SDL_Flip (screen);
  SDL_FreeSurface (pic);
  SDL_Delay (2000);

  return 0;

}
票数 5
EN

Stack Overflow用户

发布于 2010-06-12 17:49:53

由于您已经在使用SDL,因此可以使用SDL_PollEvent function运行event loop,检查按键事件是否为ESC。看起来这和mySDL_Event.key.keysym.sym == SDLK_ESCAPE差不多。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3029545

复制
相关文章
Ngnix如何处理http请求
nginx首先确定哪个服务器应处理该请求。让我们从一个简单的配置开始,其中所有三个虚拟服务器都在端口*:80上侦听:
星哥玩云
2022/08/08
9470
测试中如何处理 Http 请求?
不知道大家平时写单测时是怎么处理 网络请求 的,可能有的人会说:“把请求函数 Mock ,返回 Mock 结果就行了呀”。
写代码的海怪
2022/08/31
1.3K0
[CodeIgniter4]概述-处理 HTTP 请求
为了充分地使用 CodeIgniter,你需要对 HTTP 请求和响应的工作方式有基本的了解。对于所有想要成功的开发者来说, 理解 HTTP 背后的概念是 必须 的。
landv
2020/03/05
1.9K0
Http请求处理流程
我查阅过不少Asp.Net的书籍,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net。他们耐心、细致地告诉你如何一步步拖放控件、设置控件属性、编写CodeBehind代码,以实现某个特定的功能。
张子阳
2018/09/27
1.3K0
Http请求处理流程
如何使用Java处理HTTP请求和响应?
Java中有许多成熟的HTTP框架可以使用,例如Spring、Netty等。这些框架提供了各种HTTP处理器和工具类,使得HTTP请求和响应处理变得更加容易和高效。下面是一个简单的Java代码示例,演示如何使用Java处理HTTP请求和响应:
用户1289394
2023/08/22
6540
如何使用Java处理HTTP请求和响应?
图解 Spring:HTTP 请求的处理流程与机制【1】
2003 年,老兵哥初到中兴开始研究生实习,Spring 就是那年诞生的,2004 年 3 月发布了 1.0 版本,到现在已经超过 15 年了。从单体式分层架构到云原生微服务架构,它稳坐在 JAVA 应用框架的头把交椅上从未被撼动,它给我们带来了巨大的价值,不仅可以降低开发难度,同时还可以提升开发效率。但时间这把杀猪刀不仅改变了老兵哥,也同样没放过 Spring,我们都变得越来越强大了。
IT老兵哥
2020/01/15
1K0
图解 Spring:HTTP 请求的处理流程与机制【1】
RxJS 处理多个Http请求
有时候进入某个页面时,我们需要从多个 API 获取数据然后进行页面显示。管理多个异步数据请求会比较困难,但我们可以借助 Angular Http 服务和 RxJS 库提供的功能来实现上述的功能。处理多个请求有多种方式,使用串行或并行的方式。
阿宝哥
2019/11/05
5.8K0
NodeJS源码解析--Node如何处理HTTP请求
看过我之前的写的文章的朋友们应该会知道,使用NodeJS创建一个HTTP服务器是非常简单的。我们写的一个个API中使用req来接收请求,使用res来响应请求。那么req/res参数从何而来?http的头部信息是如何进行创建呢?接下来我们来从源码角度分析:NodeJS究竟是如何处理一个HTTP请求。
创译科技
2019/07/10
2.2K0
NodeJS源码解析--Node如何处理HTTP请求
HTTP请求与响应处理
客户端向服务器端发送请求时,有时需要携带一些客户信息,客户信息需要通过请求参数的形式传递到服务器端,比如登录操作。
Qwe7
2022/04/22
8690
HTTP请求与响应处理
客户端向服务器端发送请求时,有时需要携带一些客户信息, 客户信息需要通过请求参数的形式传递到服务器端,比如登录操作。
清出于兰
2020/10/29
9490
HTTP请求与响应处理
Influxdb的Http请求处理流程
3.4 关键函数之s.serverTCP(),使用之前初始化的listener和handler启动真正的http服务
扫帚的影子
2018/12/13
1.1K0
HTTP跨域请求后台处理
字面意思就是从Y域中去Http请求X域的后台,但是请求反馈的资源的Http头中没有包含'Access-Control-Allow-Origin'内容,什么意思呢?
Cloudox
2021/11/23
7850
【http 请求返回状态码 500 】 Spring Boot 模拟http请求「建议收藏」
最近弄的项目中要求给另外一个服务器传送数据,预定是用http的方式,在开始动手之前我打算用Spring Boot模拟下服务器之间的请求
全栈程序员站长
2022/08/31
3.3K0
【http 请求返回状态码 500 】 Spring Boot 模拟http请求「建议收藏」
面试官:tomcat是如何处理http请求的?
因为tomcat实现了Servlet规范,所以我们得掌握什么是Servlet?什么是Servlet规范? 什么是Servlet呢? Servlet是JavaEE规范的一种,主要是为了扩展Java作为W
田维常
2021/01/28
9000
Fiddler怎么抓取Net程序内部的Http请求包
(Fiddler是通过在本机计算器添加一个默认的代理服务器来实现的抓包数据的,端口号为:8888)
西柚dzh
2022/06/09
9260
Fiddler怎么抓取Net程序内部的Http请求包
python 3 处理HTTP 请求的包
http: https://docs.python.org/3/library/http.html
py3study
2020/01/03
1.2K0
Python处理HTTP请求之requests指北
如果你需要在Python中进行HTTP请求的处理,有很多种方式可以使用。比较原始的有Python的内置库urllib、也有比较高级一点的第三方模块aiohttp。
州的先生
2020/09/16
3.7K0
Python处理HTTP请求之requests指北
4 OpenResty & Lua 处理各类Http请求
测试有不同的结果,form-data数据是混乱的,x-www-form-urlencoded才是正常的!
收心
2022/08/24
1.9K0
4 OpenResty & Lua 处理各类Http请求
HTTP请求的11个处理阶段
摘自 陶辉 深入理解Nginx 几乎所以有关Nginx书只要是讲深入点的就会讲到Nginx请求的11个处理阶段,要记住这些真是不易,人脑特别不擅长记住各种东西,只能做些索引罢了,能做到知道这个知识点在哪儿能找到不就行了,可是你去面试还是问这些理论,所以这里汇总下记录如下 ngx_http_phases阶段定义 typedef enum { // 在接收到完整的HTTP头部后处理的HTTP阶段 NGX_HTTP_POST_READ_PHASE = 0, /*在将请求的URI与l
三杯水Plus
2019/03/14
5960
点击加载更多

相似问题

如何在Spring中处理HTTP选项请求?

31

用tomcat和spring异步处理http请求

12

Spring boot同时处理http和HTTPS请求

20

如何在Spring中分析复杂的http请求处理?

30

Spring Boot Web:停止当前http请求处理

1163
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文