Slimer软工课设日报-2016年7月1日

今天主要解决了全屏状态下按钮无法顺利点击的问题

起初我以为是程序运行代码过多导致的卡顿,多点几次才能顺利交互,后来多调试了几次发现是判定区的问题

全屏后本来按钮的判定区是按照窗体比例放大且移动到指定位置范围的,但实际全屏后所有按钮的判定区都向上偏移了,所以才导致点击原来的位置没有反映

原先的按钮的判定区的xy范围是根据背景的像素点加上当前的窗口大小换算的,具体换算函数如下:

double changex(int x) {
    return x*2.0 / WindowWidth -1;
}

double changey(int y) {
    return y*2.0 / WindowHeight-1;
}

坐标换算

此时的窗口大小WindowWidth和WindowHeight是包含了上面标题框的,所以后面有个-1

然而当用了全屏函数glutFullScreen()后,上面的标题框没了,也不算在当前窗口大小里了,自然所有按钮判定区都向上移动了

所以需要一个全屏标识符,来区分此时是窗口化还是全屏,来根据此时实际游戏画面内容的大小来改变窗口大小,具体更改了getWindowsSize()函数

void getWindowsSize() {                                    //记录当前窗口大小*
    HWND windows = GetActiveWindow();                    //获取当前活动窗口句柄
    RECT rc;
    GetWindowRect(windows, &rc);                        //获取窗口大小信息

    if(Fullscreen==true){
        WindowHeight = rc.bottom - rc.top;                //改变当前窗口高度(全屏)
        WindowWidth = rc.right - rc.left;                    //改变当前窗口宽度
    }
    else {
        WindowHeight = rc.bottom - rc.top - 39;                //改变当前窗口高度(窗口化)
        WindowWidth = rc.right - rc.left - 16;                    //改变当前窗口宽度
    }
}

getWindowsSize()

时间: 2024-10-06 20:34:33

Slimer软工课设日报-2016年7月1日的相关文章

Slimer软工课设日报-2016年6月30日

根据上期预告,今天的主要工作是增加了初始界面和设置界面 初始界面 点击start按钮,若在设置中已成功连接服务器,则会进入账号登录界面,否则弹窗报错 void start() { //开始游戏按钮 if (connected == 0) { MessageBox(NULL,"未连接到服务器,请在设置中输入IP","错误" , MB_OK); } else { form = 1; //账号登录页面 } } start按钮 代码中connected变量当设置页面中ip连

Slimer软工课设日报-2016年7月5日

今天主要增加了角色创建界面,以及按钮选中高亮 这个界面是在点击登录界面之后出现的,当然有可能改为注册界面后出现,具体看最终版本 在角色选择界面,可以点选自己喜欢的角色,然后点击的角色会被高亮,进入游戏的角色也会随之改变(游戏操作界面的各种头像框和经验条物品栏等等由另一位史皓宇同学负责,我这里的截图还是原始版) 也可以输入玩家姓名,到时自身的姓名将显示在左上角的适当位置,其他玩家的姓名也会显示在各自角色的头顶上 1 class playerform :form //* 2 { 3 public:

Slimer软工课设日报--第一天

根据之前用户反馈的调整窗口大小后按钮失灵的问题,我设计了如下的解决方案: 由于按钮响应是通过判断是否点击在该按钮相应的xy坐标范围里来判定的,按钮的xy坐标则是通过窗口大小换算的 double changex(int x) { return x*2.0 / WindowWidth - 1; } double changey(int y) { return y*2.0 / WindowHeight - 1; } 换算函数 而原先的游戏窗口大小是固定的,所以当用户改变窗口大小时,按钮还是原来的判定区

软工课设第二天 6.28

day 2 日报内容: 姓名 王日 时间 2016年6月28日 小组会议内容 时间:11:00~11:20 地点:信东101 商定主要工作: (1)       将用户反馈意见统计合并,列出清单 今天系统完善部分: (2)游戏背景切换完善,渐变切换(杨子彤主要负责) (3)增加金币&道具部分,提高可玩性 (4)在助教的提议下,决定使用服务器 学习内容 由于选择java编程,所以有测试工具Junit可以使用. 我负责测试部分,所以需要学习一下 主要看了这两篇博客,还没开始动手实践 http://b

软工课设第一天 6.27

day1 姓名 王日 时间 2016年6月27日 学习内容 1)  选择java编程 2)  人员分工 编写代码: 段杰(组长).于博文.张鹏 测试用例: 陶元睿.王日(我) 美工&文档整理 杨子彤 3)  系统反馈表填写收集 4)  建立微信群,及时发布通知 所遇问题 1)  有组员java环境未搭建好 2)  由用户反馈发现的问题 游戏难度过于简单 缺乏创新点 不能存储成绩 解决方案 1)  增加金币&游戏道具加强游戏性 2)  增加难度选择 3)  添加成绩本地存储,进一步可以联网

软工课设第二周第一天 7.4

姓名 王日 时间 2016年7月4日 小组任务 信东201 (1)       购买道具&排行榜&道具使用加入到游戏主类中 ——段杰(组长).张鹏.于博文 (2)       Java中添加音乐作为游戏背景音乐——陶元睿 (3)       黑盒测试——王日 (4)       制作答辩ppt——杨子彤 个人学习内容 白盒测试,代码覆盖率均已掌握,还有黑盒测试可以进行 通过网上查阅资料,主要参考以下博客,学习Jtest测试工具 http://www.cnblogs.com/rollenho

软工课设第一周周五报告

姓名 张骁 时间 2016年7月1日 学习内容 今天并没有什么要解决的问题,但是为了增添游戏性,我们需要增加一个游戏中的机关或障碍. 首先,在设计的最开始需要确定下来该机关的主要功能,这一步的难度在于不能和现有机关的功能重叠,同时还要保证机关的适应性,即可以用在不同布局的多个关卡中的能力.我们现有的机关主要分为传送类.阻挡类和辅助类.传送类的机关入Sucker能够使玩家发生位置的变化,阻挡类的机关如Rock能够挡住玩家的路线,辅助类的机关如Trigger能够触发其他类的机关.通过这样的梳理,我们

软工课设第三天 6.29

day 3 姓名 王日 时间 2016年6月29日 小组今日任务 (1)      服务端分离和建立 (2)      本地记录存取功能的完成 (3)      数据库重新设计规划 (4)      讨论了接下来的增加功能及完成方法 个人学习内容 进一步学习Junit 开始进行简单示例尝试 所遇问题 开发环境遇到问题 找不到C/C++编译器 解决方案 通过网上查阅资料,按下述方法进行设置 http://www.tuicool.com/articles/ma6nueQ 晚上回学校才着手环境的配置,

软工课设第一周周三报告

姓名 张骁 时间 2016年6月29日 学习内容 今天我对用户反映的另一个问题进行了解决.在最开始的设计阶段,我们考虑到用户对游戏的不熟悉,于是做出了一份操作说明附在了菜单中,但是用户反映当进入游戏之后没办法实时打开操作说明,必须退出到开始菜单. 问题的修补方法有多种,比如在游戏界面添加一个按钮,点击后进入菜单中的同一个操作说明.但是这种方法的不便之处是,若想从操作说明界面返回之前进行的关卡十分麻烦,需要通过单独的变量保存之前的关卡号等信息. 另一个简单的替代方法是在游戏进行时通过按下一个按键显