游戏编程基础之(一):实现物体在窗口上的往返运动
近期在学习《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 )
{
}
运行结果:
游戏编程基础之(一):实现物体在窗口上的往返运动相关推荐
- 游戏编程基础(五)背景地图滚动显示
在游戏过程中,背景地图需要跟着人物的移动而动态的滚动变换.C++游戏编程基础中介绍了2D游戏中常用的3种动态背景表现手法.其原理和实现技巧分析如下: 方法一:单一背景滚动 原理是:利用 ...
- VC++游戏编程基础无法找到“d3d9.h”问题
经反复查阅是缺少Direct X SDK导致的,我用的是VC++6.0,支持Direct X SDK 9.0b及之前的版本,最新版DX SDK(JUNE)VC6驾驭不了...下面是我解决问题的思路(只 ...
- Building JavaScript Games for Phones Tablets and Desktop(2)-游戏编程基础
2019独角兽企业重金招聘Python工程师标准>>> 这章覆盖了游戏编程的基本原理.首先,你会了解到游戏的基本框架,就是一个游戏世界和一个游戏循环.你将会通过不同的例子学到如何用J ...
- DirectDraw 游戏编程基础(2)
例程1(DDEX1):DirectDraw 的基本知识 在使用 DirextDraw时,需要首先创建一个对象DirectDraw 的实体,该对象实体代表了微机显示适配器.然后,使用接口所提供的方法来操 ...
- Visual C++游戏编程基础之透明半透明效果
一.基本思路 1.半透明的原理 一张位图由许多像素组成,而每一像素包含R.G.B三原色,三原色的值决定了像素的色彩,要实现半透明效果,需要把前景图 和背景图彼此对应的像素颜色按某一比例进行调配, ...
- 【DirectX 2D游戏编程基础】DirectX精灵的创建
首先,说明一下,我的博客里的代码均为完整代码,只要环境搭建没有问题,复制代码即可运行 工程文件下载地址:http://download.csdn.net/detail/shangdi712/90520 ...
- Visual C++游戏编程基础之多背景循环动画
一.基本思路 1.现在有三张背景图:天空和草地.山峦.房屋: 2.天空在最远处,其次是草地和山峦(因为山峦在草地上),最后是房屋: 3.背景的循环速度是天空最慢.然后是山峦.最后是草地和房屋: 4.恐 ...
- Visual C++游戏编程基础之摩擦力、加速度、重力
一.基本思路 1.假设小球在空中只受到重力作用,一开始给它一个水平的速度,就像是平抛运动一样: 2.当小球碰到地面时,受到摩擦力作用,分为x方向和y方向: 3.在摩擦力作用下,1.减少水平方向的速度, ...
- Visual C++游戏编程基础之利用鼠标消息实现贴图
一.鼠标键入消息 1.WM_LBUTTONDBLCLK 双击鼠标左键: 2.WM_LBUTTONDOWN 单击鼠标左键: 3.WM_LBUTTONUP ...
最新文章
- (转载)输出文件的指定行
- Mikrotik RouterOS 日常问题解析 ROS 5.4下载
- pytorch的两个函数 tensor.detach(),tensor.detach_(),tensor.clone() 的作用和区别
- 好习惯!pandas 8 个常用的 index 设置
- php编译安装与配置
- 双系统重装windows以后修复ubuntu的引导
- 3-07. 求前缀表达式的值(25) (ZJU_PAT数学)
- LinkedHashMap的实现原理
- html tab与jQuery,使用jquery实现div的tab切换实例代码
- 组件php53 php55区别,分享下php5类中三种数据类型的区别
- 通讯软件通常要哪几个端口_您通常打开几个浏览器标签?
- ztree 实例地址
- SQL Server2000导出数据时包含主键、字段默认值、描述等信息
- 从Nest到Nesk -- 模块化Node框架的实践
- 计算机PS个人规划目标,这里有一份PS个人陈述写作规划
- Firefox定位网页元素工具
- 互联网金融数据分析指标
- codeforces228A Is your horseshoe on the other hoof?(水题)
- IT资讯精选(2022-09-11)
- linux shell脚本编写 | 三角形 | 梯形 | 菱形 | 九九乘法表 | 矩形 | 超详细
热门文章
- C语言出生日期输入输出
- 严重:异常将上下文初始化事件发送到类的侦听器实例.[org.springframework.web.context.ContextLoaderListener] 以解决
- 腾讯云浏览器无法通过公网访问云服务器
- 怀旧服野外pvp最多的服务器,魔兽世界怀旧服PVP指南 野外PK这样穿才最强
- 关于水仙花数及用Python函数解析水仙花数算法
- 叮当猫商城系统开源的小程序商城系统
- 计算机术语补丁的用途,怎么查看系统补丁的作用
- 信息高速公路计划使计算机应用进入,信息高速公路计划使计算机应用进入了()的新的发展阶段...
- Python判断if语句
- 浅谈数据治理体系演进