游戏编程基础之(二):通过鼠标点击控制开关的闭合

第八章的内容之一,判断鼠标位置以及点击,从而控制开关,最终实现控制环境光线程度的小程序。

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


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




const int FISH_SPRITE_INDEX=1;
const int MOUSE_SPRITE_INDEX1=2;


const int ON_BUTTON_INDEX=1;
const int OFF_BUTTON_INDEX=2;
const int ROOM_INDEX=1;
const int SWITCH=2;






const int FRAME_PER_SEC=10;
const int REFRESH_MODE=1;


int g_LIGHT_ON=1;






void app::Begin( void )
{


agk::SetSyncRate(FRAME_PER_SEC,REFRESH_MODE);
agk::SetVirtualResolution(agk::GetDeviceWidth(),agk::GetDeviceHeight());//可以用SCREEN_WIDTH的值,也可以让计算机自动获取


agk::LoadImage(ON_BUTTON_INDEX,"light_switch_on.png");
agk::LoadImage(OFF_BUTTON_INDEX,"light_switch_off.png");


agk::CreateSprite(ROOM_INDEX,"room.png");
agk::CreateSprite(SWITCH,ON_BUTTON_INDEX);//可以用"light_switch_on.png",也可以用ON_BUTTON_INDEX
agk::SetSpriteScale(SWITCH,0.15,0.15);
agk::SetSpritePosition(SWITCH,50,50);


}




void app::Loop ( void )
{


if(agk::GetRawMouseLeftPressed())
{
float mouseX=agk::GetRawMouseX();
float mouseY=agk::GetRawMouseY();
if(agk::GetSpriteHit( mouseX,mouseY)==SWITCH) //重点:判断鼠标按键位置是否在开关上!
{
if(g_LIGHT_ON) //如果开关是亮的,默认为亮(全局变量g_LIGHT_ON=1)
{
agk::SetSpriteColor(ROOM_INDEX,64,64,64,255);//调暗背景
agk::SetSpriteColor(SWITCH,64,64,64,255);
agk::SetSpriteImage(SWITCH,OFF_BUTTON_INDEX);
g_LIGHT_ON=0;
}
else
{
agk::SetSpriteColor(ROOM_INDEX,255,255,255,255);
agk::SetSpriteColor(SWITCH,255,255,255,255);
agk::SetSpriteImage(SWITCH,ON_BUTTON_INDEX);
g_LIGHT_ON=1;
}
}


}


agk::Sync();
}




void app::End ( void )
{

}


实验结果:按下SWITCH,程序结果如图所示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值