近期在学习《C++游戏与图形编程基础》第2版  地址是:http://transbot.blog.163.com/blog/static/5421396120145108282739/ 里面有一些环境搭建的流程,以及相应代码。开发环境是VC++2000,整个游戏框架为 AGK。

就自己的进度做一个记录,也作为交流学习之用。如有不足之处,敬请指正。

1~6章为C++基础部分,暂且略过。

第7章介绍了一些最基本的游戏界面的操作,包括控制图像的位置,多图像之间的层次判断,以及物体移动的方法等

#include "template.h"
using namespace AGK;
app App;

const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;

const int BEACH_INDEX = 1;
const int DOG_IMAGE_INDEX = 1;
const int DOG_SPRITE_INDEX = 2;

const float ROTATION=1;
const int MOVEMENT=5;
const int StartX=0;
const int StartY=0;

const int FRAME_PER_SEC=60;
const int REFRESH_MODE=1;

const int MOVING_RIGHT=1;
const int MOVING_LEFT=0;
int g_GAME_STATE=1;
//const int MISSBEAR_IMAGE_INDEX = 1;
//const int MISSBEAR_SPRITE_INDEX = 2;

void app::Begin( void )
{
agk::SetSyncRate(FRAME_PER_SEC,REFRESH_MODE);//frameRate
   agk::SetVirtualResolution(SCREEN_WIDTH, SCREEN_HEIGHT);

agk::CreateSprite(BEACH_INDEX, "DogAtBeach/beach.png");//创建图像
   agk::LoadImage(DOG_IMAGE_INDEX,"DogAtBeach/Dog.png",1);  //1表示去除黑色背景,即将该图像的黑色背景部分去除,之后给下一行的create用
   agk::CreateSprite(DOG_SPRITE_INDEX,DOG_IMAGE_INDEX);//这里不能将DOG_IMAGE_INDEX变为"Dog.png",不然显示的图像就没有去黑色背景的作用了

agk::SetSpriteDepth(DOG_SPRITE_INDEX,0); //图片深度,范围0~1000 数字越小表示显示地越靠前
   agk::SetSpriteDepth(BEACH_INDEX,1000);

agk::SetSpritePosition(DOG_SPRITE_INDEX,0,0);
   agk::SetSpriteScale(DOG_SPRITE_INDEX,0.3,0.3); //缩放

}

void app::Loop ( void )
{
int DogX=agk::GetSpriteX(DOG_SPRITE_INDEX);

int SpiriteWidth=agk::GetSpriteWidth(DOG_SPRITE_INDEX);
int SpiriteHeight=agk::GetSpriteHeight(DOG_SPRITE_INDEX); //获取图像的宽、高等信息

if(g_GAME_STATE==MOVING_RIGHT )  //重点部分,通过全局变量g_GAME_STATE来判断物体的运动情况,默认设置为1
{

if(DogX<SCREEN_WIDTH-SpiriteWidth) 
{
agk::SetSpriteX(DOG_SPRITE_INDEX,DogX+MOVEMENT); //Dog向右移动
}
else
{
g_GAME_STATE=MOVING_LEFT;  //Dog运动到最右边后,改变状态
}
}
else
{
if(DogX > StartX)
{
agk::SetSpriteX(DOG_SPRITE_INDEX,DogX-MOVEMENT); //Dog向左移动
}
else
{
g_GAME_STATE=MOVING_RIGHT ; //Dog运动到最左边后,改变状态,之后Dog运动方向再次变为向右,实现不间断运动的效果
}
}

agk::Sync();
}

void app::End ( void )
{
}

运行结果:

游戏编程基础之(一):实现物体在窗口上的往返运动相关推荐

  1. 游戏编程基础(五)背景地图滚动显示

    在游戏过程中,背景地图需要跟着人物的移动而动态的滚动变换.C++游戏编程基础中介绍了2D游戏中常用的3种动态背景表现手法.其原理和实现技巧分析如下: 方法一:单一背景滚动         原理是:利用 ...

  2. VC++游戏编程基础无法找到“d3d9.h”问题

    经反复查阅是缺少Direct X SDK导致的,我用的是VC++6.0,支持Direct X SDK 9.0b及之前的版本,最新版DX SDK(JUNE)VC6驾驭不了...下面是我解决问题的思路(只 ...

  3. Building JavaScript Games for Phones Tablets and Desktop(2)-游戏编程基础

    2019独角兽企业重金招聘Python工程师标准>>> 这章覆盖了游戏编程的基本原理.首先,你会了解到游戏的基本框架,就是一个游戏世界和一个游戏循环.你将会通过不同的例子学到如何用J ...

  4. DirectDraw 游戏编程基础(2)

    例程1(DDEX1):DirectDraw 的基本知识 在使用 DirextDraw时,需要首先创建一个对象DirectDraw 的实体,该对象实体代表了微机显示适配器.然后,使用接口所提供的方法来操 ...

  5. Visual C++游戏编程基础之透明半透明效果

    一.基本思路 1.半透明的原理 一张位图由许多像素组成,而每一像素包含R.G.B三原色,三原色的值决定了像素的色彩,要实现半透明效果,需要把前景图    和背景图彼此对应的像素颜色按某一比例进行调配, ...

  6. 【DirectX 2D游戏编程基础】DirectX精灵的创建

    首先,说明一下,我的博客里的代码均为完整代码,只要环境搭建没有问题,复制代码即可运行 工程文件下载地址:http://download.csdn.net/detail/shangdi712/90520 ...

  7. Visual C++游戏编程基础之多背景循环动画

    一.基本思路 1.现在有三张背景图:天空和草地.山峦.房屋: 2.天空在最远处,其次是草地和山峦(因为山峦在草地上),最后是房屋: 3.背景的循环速度是天空最慢.然后是山峦.最后是草地和房屋: 4.恐 ...

  8. Visual C++游戏编程基础之摩擦力、加速度、重力

    一.基本思路 1.假设小球在空中只受到重力作用,一开始给它一个水平的速度,就像是平抛运动一样: 2.当小球碰到地面时,受到摩擦力作用,分为x方向和y方向: 3.在摩擦力作用下,1.减少水平方向的速度, ...

  9. Visual C++游戏编程基础之利用鼠标消息实现贴图

    一.鼠标键入消息 1.WM_LBUTTONDBLCLK       双击鼠标左键: 2.WM_LBUTTONDOWN         单击鼠标左键: 3.WM_LBUTTONUP            ...

最新文章

  1. (转载)输出文件的指定行
  2. Mikrotik RouterOS 日常问题解析 ROS 5.4下载
  3. pytorch的两个函数 tensor.detach(),tensor.detach_(),tensor.clone() 的作用和区别
  4. 好习惯!pandas 8 个常用的 index 设置
  5. php编译安装与配置
  6. 双系统重装windows以后修复ubuntu的引导
  7. 3-07. 求前缀表达式的值(25) (ZJU_PAT数学)
  8. LinkedHashMap的实现原理
  9. html tab与jQuery,使用jquery实现div的tab切换实例代码
  10. 组件php53 php55区别,分享下php5类中三种数据类型的区别
  11. 通讯软件通常要哪几个端口_您通常打开几个浏览器标签?
  12. ztree 实例地址
  13. SQL Server2000导出数据时包含主键、字段默认值、描述等信息
  14. 从Nest到Nesk -- 模块化Node框架的实践
  15. 计算机PS个人规划目标,这里有一份PS个人陈述写作规划
  16. Firefox定位网页元素工具
  17. 互联网金融数据分析指标
  18. codeforces228A Is your horseshoe on the other hoof?(水题)
  19. IT资讯精选(2022-09-11)
  20. linux shell脚本编写 | 三角形 | 梯形 | 菱形 | 九九乘法表 | 矩形 | 超详细

热门文章

  1. C语言出生日期输入输出
  2. 严重:异常将上下文初始化事件发送到类的侦听器实例.[org.springframework.web.context.ContextLoaderListener] 以解决
  3. 腾讯云浏览器无法通过公网访问云服务器
  4. 怀旧服野外pvp最多的服务器,魔兽世界怀旧服PVP指南 野外PK这样穿才最强
  5. 关于水仙花数及用Python函数解析水仙花数算法
  6. 叮当猫商城系统开源的小程序商城系统
  7. 计算机术语补丁的用途,怎么查看系统补丁的作用
  8. 信息高速公路计划使计算机应用进入,信息高速公路计划使计算机应用进入了()的新的发展阶段...
  9. Python判断if语句
  10. 浅谈数据治理体系演进