不过游戏 主机 开发一般都是需要相关套件
而且周期较长 一个人很难做得来
PSP程序开发例子解析(二)Images2008-07-03 20:46第二个例子程序演示了如何在屏幕上绘制图片 附上源码 变化不大 很简单的几句代码搞定了
1.头文件GameApp.h
#ifndef _GAMEAPP_H_
#define _GAMEAPP_H_
#include <JApp.h>
class JQuad//JQuad定义了图片上的显示范围 比如很多的小图片存为了一个大图片 在大图片上指定显示的坐标
class JSprite//动画 似乎没用到
class JTexture//把一个图片读成了一个JTexture = =!里面不晓得有什么内容 没有doc可看
class GameApp: public JApp
{
private:
JTexture* mBgTex//整个背景的图片
JTexture* mSpriteTex//2个人物的图片
JQuad* mBg//定义了整个背景的大小
JQuad* mBoy//男孩在人物图片上的大小
JQuad* mGirl//女孩在人物图片上的大小
public:
GameApp()
virtual ~GameApp()
virtual void Create()
virtual void Destroy()
virtual void Update()
virtual void Render()
virtual void Pause()
virtual void Resume()
}
#endif
2.源码文件GameApp.cpp
#include <stdio.h>
#include <JGE.h>
#include <JRenderer.h>
#include <JLBFont.h>
#include <JSprite.h>
#include <JFileSystem.h>
#include "GameApp.h"
GameApp::GameApp()
{
mBgTex = NULL
mBg = NULL
mSpriteTex = NULL
mBoy = NULL
mGirl = NULL//都给它设成NULL干啥 没有意义啊
GameApp::~GameApp()
{
}
//程序启动
void GameApp::Create()
{
JRenderer* renderer = JRenderer::GetInstance()
// Load background texture (texture format can be PNG, JPG or GIF)
mBgTex = renderer->LoadTexture("bg.jpg")//初始化加载背景图片 可以PNG JPG GIF的 开发的API封装的很好 都提供的了高层的API 没有暴露什么底层的东西= =! 看来之前我对图片处理的考虑有点多虑了 能运行上100M的3D游戏 应该不会太在乎内存消耗 不泄露就行
// Load texture for the characters (use TEX_TYPE_USE_VRAM to load texture into VRAM on PSP and this can speed up the rendering)
mSpriteTex = renderer->LoadTexture("planet.png", TEX_TYPE_USE_VRAM)//用这个参数来加速
//JQuad定义了一个范围 在没BgTex上 从左上角到右下角 看代码知道了PSP屏幕的尺寸为480*272
mBg = new JQuad(mBgTex, 0, 0, 480, 272) // Create background quad for rendering.
// Now let's create the image quads for the characters. The two characters are stored in one texture
// so we have to know the location and size of each one to make the quads.
mBoy = new JQuad(mSpriteTex, 0, 0, 67, 88)//同样对男孩的区域定义范围
mBoy->SetHotSpot(33.5f, 44.0f)// Set the pivot point to the middle.定义了这个图片的核心坐标 这里定义为中心 在旋转的时候围绕中心旋转 恩
mGirl = new JQuad(mSpriteTex, 68, 0, 68, 90)//女孩的图片从68开始越过了男孩的图片
mGirl->SetHotSpot(34.0f, 45.0f)//同样设置中心为HotSpot
}
void GameApp::Destroy()
{
SAFE_DELETE(mBgTex)//调用了一个宏 在JTypes.h里面:#define SAFE_DELETE(x)if (x) { delete xx = NULL} 另有文章说释放JTexture需要用什么engine.什么 应该效果是一样的mEngine->FreeMusic(mMusic)
SAFE_DELETE(mBg)
SAFE_DELETE(mSpriteTex)
SAFE_DELETE(mBoy)
SAFE_DELETE(mGirl)
}
//Update方法没有变化
void GameApp::Update()
{
JGE* engine = JGE::GetInstance()
if (engine->GetButtonClick(PSP_CTRL_TRIANGLE)) // Do a screen shot when the TRIANGLE button is pressed
{
char s[80]
sprintf(s, "ms0:/screenshot.png")
JRenderer::GetInstance()->ScreenShot(s)
}
if (engine->GetButtonClick(PSP_CTRL_CROSS))// Exit when the CROSS button is pressed
{
engine->End()
return
}
}
void GameApp::Render()
{
JRenderer* renderer = JRenderer::GetInstance()
renderer->RenderQuad(mBg, 0, 0)//具体画屏幕了 绘制整个背景 画mBg的范围JQuad
renderer->RenderQuad(mBoy, 33.5, 44, 0.0f, 1.0f, 1.0f) // Scale down the characters a little bit when rendering.
renderer->RenderQuad(mGirl, 320, 235, 0.0f, 0.7f, 0.7f)//参数分别为x点 y点 左上角开始计算 0.0f为旋转角度 没弄明白这个单位是什么 0.7f 和0.7f是x轴和y轴的缩放比例1是按照原大小0.7f是缩小了
Sleep(1)//自己加的 纯粹是为了减少CPU占用 否则一运行CPU就满了 似乎这个函数在PSP中不支持
}
void GameApp::Pause()
{
}
void GameApp::Resume()
名词: n.Personal Software Process(PSP)与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。PSP能够:
(1) 说明个体软件过程的原则;
(2) 帮助软件工程师作出准确的计划;
(3) 确定软件工程师为改善产品质量要采取的步骤;
(4) 建立度量个体软件过程改善的基准;
(5) 确定过程的改变对软件工程师能力的影响。
个人软件过程着重于提升个人的能力。PSP可以让每一个人明白自己如何制订计划并跟踪自己的工作,提供工作有效性的数据并识别出自己的优势和劣势,从而使你能够不断了解和改善自己的技能和才智,并在工作中充分利用自己独特的才能。而TSP向你展示如何成为合格的项目组成员,如何创建高效且具有自我管理能力的工程小组,从而达到高效的协同开发。
PSP (Personal Software Process) 是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。PSP能够说明个体软件过程的原则; 帮助软件工程师作出准确的计划;确定软件工程师为改善产品质量要采取的步骤;建立度量个体软件过程改善的基准;确定过程的改变对软件工程师能力的影响。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)