zoukankan      html  css  js  c++  java
  • Slimer软工课设日报-2016年6月30日

    根据上期预告,今天的主要工作是增加了初始界面和设置界面

    初始界面

    点击start按钮,若在设置中已成功连接服务器,则会进入账号登录界面,否则弹窗报错

    void start() {                //开始游戏按钮
        if (connected == 0) {
            MessageBox(NULL,"未连接到服务器,请在设置中输入IP","错误" , MB_OK);
        }
        else {
            form = 1;  //账号登录页面  
        }
    }   
    start按钮

    代码中connected变量当设置页面中ip连接成功时置1,Form1表示账号登录界面(Form0为初始界面,Form为游戏操作界面,Form3为设置页面)


    设置页面

    IP输入框与连接按钮依旧利用了之前的函数,只是由于位置改变,初始化两个控件时的坐标改变了

    其中所有的按钮和输入框都是利用原先写的Button和InputBox定义的

    Button back_button(changex(0), changey(768 - 666), changex(124 - 0) + 1, changey(707 - 666) + 1, back);
    Button connect_button(changex(806), changey(768 - 366), changex(921 - 806) + 1, changey(420 - 366) + 1, connecttoserver);
    Button musicon_button(changex(428), changey(768 - 463), changex(664 - 428) + 1, changey(517- 463) + 1, musicon);
    Button musicoff_button(changex(658), changey(768 - 463), changex(921 - 658) + 1, changey(517 - 463) + 1, musicoff);
    Button fullscreen_button(changex(428), changey(768 - 556), changex(664 - 428) + 1, changey(610 - 556) + 1, fullscreen);
    Button window_button(changex(685), changey(768 - 556), changex(921 - 685) + 1, changey(610 - 556) + 1, window);
    InputBox ip_inputbox(changex(428), changey(768 - 366), changex(795 - 428) + 1, changey(420 - 366) + 1);

    Button对象的最后一个参数是通过鼠标点击响应绑定的对应函数

    class Button {
    public:
        double x;
        double y;
        double w;
        double h;
        ClickEvent clickevent;            //按钮函数
        Button(double x1, double y1, double w1, double h1,ClickEvent ck) {
            x = x1;
            y = y1;
            w = w1;
            h = h1;
            clickevent = ck;
        }
        void draw() {            //绘制按钮
            glColor3f(0, 0, 0);
            glBegin(GL_QUADS);
                glVertex2f(x+w, y);
                 glVertex2f(x, y);
                 glVertex2f(x, y-h);
                 glVertex2f(x+w, y-h);
            glEnd();
        }
        void click(double x1,double y1) {        //点击响应函数
    
            if (x1 >= x&&x1 <= x + w&&y1 >= y - h&&y1 <= y) {
                clickevent();
            }
        }
    };
    Button

    具体每个按钮的点击响应函数实现如下:

    void connecttoserver() {
        stringstream ss(ip_inputbox.s);
        int a, b, c, d;
        char c1, c2, c3;
        ss >> a >> c1 >> b >> c2 >> c >> c3 >> d;
        if (c1 == '.'&&c2 == '.'&&c3 == '.'&&a <= 255 && a >= 0 && b <= 255 && b >= 0 && c <= 255 && c >= 0 && d <= 255 && d >= 0) {
            SERVIP = ip_inputbox.s.c_str();
            int status = client();
            if (status == 0) {
                MessageBox(NULL, "连接成功", "成功", MB_OK);            //*
                connected = 1;                //*
            }
            else if (status == 1) {
                MessageBox(NULL, "连接失败,请重试", "错误", MB_OK);
            }
            //form = 1;
        }
        else {
            ip_inputbox.s.clear();
            MessageBox(NULL, "IP地址格式输入错误,请重新输入", "错误", MB_OK);
        }
    }
    Connect

    ip输入不符合规范时,会提示如下错误

    连接成功时

    连接失败时

    void musicon() {                //打开音乐按钮*
        PlaySound("res/abc.wav", NULL, SND_FILENAME | SND_ASYNC);
    }
    Music on
    void musicoff() {                //关闭音乐按钮*
        PlaySound(NULL, NULL, NULL);
    }
    Music off
    void fullscreen(){                //全屏按钮*
        glutFullScreen();
    }
    fullscreen
    void window() {                //窗口化按钮*
        glutReshapeWindow(1366, 768);            //改变窗口大小
        int cx = glutGet(GLUT_SCREEN_WIDTH);    //获取屏幕大小
        int cy = glutGet(GLUT_SCREEN_HEIGHT);
        glutPositionWindow((cx - 1366) / 2, (cy - 768) / 2);    //窗口居中
    }
    window
    void back() {                //返回按钮*
        form = 0;    //返回初始界面    
    }    
    back

    通过以上工作,我学习了如何使窗口最大化和恢复窗口化,参考了http://www.xuebuyuan.com/1559974.html

    以及openGL设置窗口居中的方法,参考了http://www.linuxidc.com/Linux/2012-04/58982.htm

    还有MessageBox的使用,参考了百度百科


  • 相关阅读:
    Python:pygame游戏编程之旅六(游戏中的声音处理)
    Python:pygame游戏编程之旅五(游戏界面文字处理详解)
    Python:pygame游戏编程之旅四(游戏界面文字处理)
    Python:pygame游戏编程之旅三(玩家控制的小球)
    Python:pygame游戏编程之旅二(自由移动的小球)
    Python:pygame游戏编程之旅一(Hello World)
    如何用JAVA写出无副作用的代码
    朋友要招几个java,让帮忙出点面试题目
    程序员:如何写出杀手级简历
    8月8日训练日记
  • 原文地址:https://www.cnblogs.com/hesoyamlyf/p/5630667.html
Copyright © 2011-2022 走看看