今天我自己的任务是针对用户提的“输入用户名和密码的时候没有光标闪烁,导致我们用户不知道是否选中”问题做的修改。
我给出的初步解决方案是一个十分简单的办法,当鼠标点击框体内部,会将cur变量置1,而在draw()函数中判断,如果cur==1则在框体中画一个小的图形,提示选中。效果图如下图所示:
而具体的实现代码则为:
if (cur) { //draw enter line signal glColor3f(1, 1, 1); glBegin(GL_POLYGON); for (int i = 0; i < n; ++i) glVertex2f(x + 0.02 + R*cos(2 * Pi / n*i), y - h / 2 + R*sin(2 * Pi / n*i)); glEnd(); }
代码是画圆,但我借用了程序框体是矩形的特点,压缩了圆,显得像一个箭头。这是一种偷懒的办法,更加优化的实现后面会再做改动。
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————
我是分割线
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————
这个新功能并不能花费一整天的时间,今天额外的发现是在玩游戏的过程中发现的。当我用一个账号玩了一会之后,关闭程序下线,服务端显示已经存储新的用户信息,不关闭服务器的情况下再次启动游戏,登入那个账号,当玩家被怪物攻击的时候,服务器会崩溃退出。
经过我们的分析,原因是出现了指错的指针。当怪物攻击玩家时会查询玩家链表,而登入登出会造成玩家链表的改动(创建和删除)。所以再登入时,由于我们写的怪物攻击时的查询算法有问题,查询出了错误,指针指到了不知道什么鬼地方,导致了服务器的崩溃。经过我们的改动这个问题得到了解决。具体的改动可见王辰成同学的博客。