Chinaunix首页 | 论坛 | 博客
  • 博客访问: 377934
  • 博文数量: 466
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-16 13:59
文章分类

全部博文(466)

文章存档

2015年(466)

我的朋友

分类: C/C++

2015-03-16 15:07:09

图片:
图片:
通過上一篇, 我們已有個基本的畫圖功能, 這次讓我們弄一個簡單的遊戲框架吧!

其實一般的遊戲, 大至有兩個主要的函數就可以了: update 和 render! (game_run() 或 game_paint() )

我們在 update 里更新遊戲數據, 然後在render 里把遊戲的畫面畫出來。我們來定議一個叫 CCGameApp 的 class 吧:

  1. class CCGameApp
  2. {
  3. public:
  4.     CCGameApp();
  5.     ~CCGameApp();
  6.    
  7.     void update(float dt);
  8.     void render();
大家看到我們的 update 函數, 有一個 dt 參數, 在這里我約為解說一下: 遊戲的更新率, 最理想是我們把它設成固定的,比如每秒60幀,但有時可能某些原因,遊戲沒法達到這個更新率,那怎麼辦呢?總不能讓角色忽快忽慢的移動吧!而這個 dt 參數是從上一幀到現在這幀,共用去了多少時間(秒),我們可以利用它調整遊戲里的數據,比如說,主角一秒移動1個像素,現在過了dt 這麼多秒,那主角應該移動 (1*dt) 個像素了!

這次,我們也把 CCSprite 一分為二,弄多了一個 CCTexture,目的是讓不同的 CCSprite 可以共享一個貼圖,一般來說,為了節省空間和速度考慮,我們會把數個小圖,放在一個大的貼圖里,像上面第一個圖,里面就有兩個角色的 圖,那我們建立兩個不同的sprites時,可以用同一個貼圖!

而建立 CCSprite的參數,就是小圖在大貼圖里的起始位置和大小:

CCSprite(CCTexture *texture, float x, float y, float width, float height);

CCSprite 的 render 也多加了一個角度的參數,我們可以用它把角色轉來轉去了!

void render(float x, float y, float angle=0.0f);

因為時間關係不寫太多了,大家有興趣,可以看一下代碼作為參考。
附件: (106 K) 下载次数:770


阅读(403) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~