文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发数据结构游戏编程入门之精灵ISprite
精品推荐
特别推荐
·网游外挂编写完全攻略
·开发WDM型的USB设备驱动程序
·数据库设计范式深入浅出
·理解软件保护技术之序列号方式
·大型网站必鉴:分销渠道的结构
·你的代码真的很健壮吗
·利用HOOK拦截封包原理
·四种网络游戏外挂的设计方法
·程序语言效率比较
·五子棋算法
·正则表达式从入门到精通
·SQL Server不能启动的常见故障
·Windows应用程序设计的基本术语
·软件本地化与汉化
·Windows中断编程
·windows nt 4.0中文版的开机过程
热点TOP10
·网游外挂编写完全攻略
·兵之利器 软件开发辅助工具纵览
·开发WDM型的USB设备驱动程序
·DCOM揭秘之六
·VS2008 第一次安装心得及使用
·游戏外挂设计技术探讨
·《数据结构》试题下载2004
·饺子馆的物流故事之二——供应链视角下的缺货及品类管理
·代码静态分析工具PC-LINT安装配置
·使用BHO定制你的IE浏览器
·原始套接字透析之Raw Socket基础
·基于CS模式的Winsock网络通讯程序
·程序语言效率比较
·《Windows程序设计》读书笔记之六
·四种网络游戏外挂的设计方法
·用CVSNT与WINCVS实现CVS的架设
·利用HOOK拦截封包原理
·简单对象访问协议(SOAP)初级指南
·带你全面了解数据库应用系统的开发步骤
·UML业务建模实例分析

游戏编程入门之精灵ISprite

日期:2007年5月3日 作者: 查看:[大字体 中字体 小字体]



  对于游戏编程而言,我也是个初学者,这个游戏编程入门系列的文章,就当作是我在学习游戏编程的笔记和阶段小结吧。我们先从最简单的“精灵”开始,暂时我们不需要考虑DirectX或是OpenGL,不需要考虑3维等等这些复杂情形,直接使用GDI+绘图功能就可以了。

  精灵,是构成游戏中活动体(比如,飞机、野兽等游戏人物)的最基本单元,任何一个活动体都可以由一个或多个精灵组合而成,每个精灵都是一个对象实例,它能够绘制自己、移动(更复杂的还可以旋转)等等基本动作。

  我让所有的精灵都实现ISprite接口,该接口如下:

游戏编程入门之精灵ISprite

  对应的代码如下:

public interface ISprite
{
 Graphics Graphics{set ;} //绘制的设备
 Bitmap Source{set ;} //精灵表面位图
 Image BackgroundImage{set ;} //游戏背景

 Point Location{get ;}

 void Erase() ;
 void Draw() ;

 void SetDirection(CompassDirections dir) ;
 void Move() ;
}

public enum CompassDirections
{
 NotSet = 0 ,
 North = 1,
 NorthEast = 2,
 East = 3,
 SouthEast = 4,
 South = 5,
 SouthWest = 6,
 West = 7,
 NorthWest = 8
}
  这个接口也许并不是完整的,随了实际的深入,可能还会有很多的元素添加进来,甚至CompassDirections枚举还可以进一步细分,但是ISprite已经有最基本“精灵”功能了。对于大多数简单的任务,我们已经可以给出ISprite的一个实现:

public class Sprite :ISprite
{
 private CompassDirections direction = CompassDirections.South ;

 #region ISprite 成员
 private Graphics graphics = null ;
 public Graphics Graphics
 {
  set
  {
   this.graphics = value ;
  }
 }

 private Bitmap source = null ;
 public Bitmap Source
 {
  set
  {
   this.source = value ;
  }
 }

 private Point location = new Point(0 ,0) ;
 public Point Location
 {
  get
  {
   return this.location ;
  }
 }

 #region BackgroundImage
 private Image backgroundImage = null ;
 public Image BackgroundImage
 {
  set
  {
   this.backgroundImage = value ;
  }
 }
 #endregion
 
 public void Erase()
 {
  Rectangle ret = new Rectangle(this.location.X , Location.Y, this.source.Width ,this.source.Height );
  this.graphics.DrawImage(this.backgroundImage, ret, ret, GraphicsUnit.Pixel);
 }

 public void Draw()
 {
  this.graphics.DrawImage(this.source,this.location.X ,this.location.Y);
 }

 public void SetDirection(CompassDirections dir)
 {
  this.direction = dir ;
 }

 public void Move()
 {
  int stepSize = 5 ;
  if(this.direction == CompassDirections.South)
  {
   this.location.Y += stepSize ;
   return ;
  }

  if(this.direction == CompassDirections.East)
  {
   this.location.X += stepSize ;
   return ;
  }

  if(this.direction == CompassDirections.West)
  {
   this.location.X -= stepSize ;
   return ;
  }

  if(this.direction == CompassDirections.North)
  {
   this.location.Y -= stepSize ;
   return ;
  }
 }
 #endregion
}
  我们要特别注意Erase方法的实现,所谓Erase实际上就是用背景图对应的区域重新绘制精灵所在的区域表面--这种技巧在游戏编程中是最基本的技巧之一。

  当精灵接收到游戏环境的时钟脉冲通知时,最常见的方法调用组合是:


[1] [2] 下一页 




上一篇:使用Eclipse+RDT插件进行Ruby开发

下一篇:IOCP中的socket错误和资源释放处理方法

游戏编程入门之精灵ISprite 相关文章:
·孤胆枪手2 - 游戏秘籍
·罪恶都市 - 游戏秘籍
·帝国时代2:征服者 - 游戏秘籍
·最详细的黑客入门法则
·《侠盗猎车手-罪恶都市》修改 - 游戏秘籍
·三国群侠传 流程攻略 - 游戏攻略
·《仙剑奇侠传2》完美补充攻略 - 游戏攻略
·暗黑破坏神2:毁灭之王 符文物品、符石功能、赫拉笛克方块等 - 游戏秘籍
·《合金装备3 食蛇者》超详尽剧情 - 游戏攻略
·《鬼舞者3》中文功略(PS2) - 其他电视游戏攻略秘籍 - 其他电视游戏
游戏编程入门之精灵ISprite 相关软件:
·孙鑫VC++从入门到精通开发详解视频教程FLASH版
·RM转换精灵V6.3
·比特精灵(BitSpirit)V3.3.1.232R 正式版
·三国群英传5 宇峻科技 单机游戏
·魔幻精灵 2
·Photoshop 入门教程
·CorelDraw12 入门与实例(图文教程 菜鸟先飞系列教材)
·灵豚课件制作工具——课件精灵v1.0 beta
·ASP入门教程
·催眠大师密训专业教程之入门指导手册(繁体版)

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot