• 课设黄金矿工小游戏


    1.团队名称、团队成员介绍

    团名:随便敲敲

    陈垚嘉(组长)

    郑俊佳(组员)

    2.项目git地址

    陈垚嘉git

    郑俊佳git

    3.项目git提交记录截图(每个人)

    4.项目功能架构图与主要功能流程图

    5.UML类图

    6.项目运行截图



    7.关键代码

    1.图形界面

     Image offScreenImage;
        @Override
        public void paint(Graphics g) {
            offScreenImage = this.createImage(768,1000);
            Graphics gImage = offScreenImage.getGraphics();
    
            bg.paintSelf(gImage);
            if(state==1){
                //绘制物体
                for(Object obj:objectList)
                {
                    obj.paintSelf(gImage);
                }
                line.paintSelf(gImage);
            }
            g.drawImage(offScreenImage,0,0,null);
        }
    

    2.线的移动以及物体的移动以及得分

    void paintSelf(Graphics g){
            logic();
            switch (state){//左右摇摆,n为角度的百分比
                case 0:
                    if(n<0.1){ dir = 1;}
                    else if (n>0.9){dir = -1;}
                    n=n+0.005*dir;
                    lines(g);
                    break;
                case 1:
                    if(length<=MAX_length){//伸长
                        length=length+5;
                        lines(g);
                    }else {state=2;}
                    break;
                case 2:
                    if(length>=MIN_length){//返回
                        length=length-5;
                        lines(g);
                    }else {
                        state=0;
                    }
                    break;
                case 3://抓取返回
                    int m=1;
                    if(length>=MIN_length){
                        length=length-5;
                        lines(g);
                        for(Object obj:this.frame.objectList){
                            if(obj.isFlag()){
                                m=obj.getM();
                                obj.setX(endx-obj.getWidth()/2);
                                obj.setY(endy);
                                if(length<=MIN_length){
                                    obj.setX(-150);
                                    obj.setY(-150);
                                    obj.setFlag(false);
                                    //加分
                                    Bg.setCount(Bg.getCount()+obj.getCount());
                                    Bg.setWaterFlag(false);
                                    state=0;
                                }
                                if(Bg.isWaterFlag()){
                                    if(obj.getType()==1){
                                        //金块
                                        m=1;
                                    }else if(obj.getType()==2){
                                        //石块
                                        obj.setX(-150);
                                        obj.setY(-150);
                                        obj.setFlag(false);
                                        Bg.setWaterFlag(false);
                                        state=2;
                                    }
                                }
                            }
                        }
                    }
                    try {
                        Thread.sleep(m);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    break;
    
                    default:
            }
        }
    

    3.关卡变化

    public void nextLevel(){
            if(bg.gameTime() && state==1){
                if(Bg.getCount() >= bg.getGoal())
                {
                    if(Bg.getLevel()==5){state=4;}
                    else {
                        state=2;
                        Bg.setLevel(Bg.getLevel()+1);
    
                    }
                }else {state=3;}
                dispose();
                GameWin gameWin1 = new GameWin();
                gameWin1.launch();
            }
    
        }
    

    .勾爪与物体的碰撞检测

    void logic(){
            for(Object obj:this.frame.objectList){
                if(endx>obj.getX() && endx<obj.getX()+obj.getWidth()
                        && endy>obj.getY() && endy< obj.getY()+obj.getHeight()){
                    state=3;
                    obj.setFlag(true);
                }
            }
    
        }
    

    8.尚待改进或者新的想法

    没有数据库,没有用户登录,只有石块和金块也显得单调

    9组员任务分配

    陈垚嘉(组长):图形界面的绘制,勾爪的摇摆伸缩抓取,物体的绘制及重量体现
    郑俊佳:积分设置,物品设置,关卡设置,游戏状态的设置,商店购物

  • 相关阅读:
    图床_OpenStack-镜像服务
    图床_OpenStack-认证服务
    图床_OpenStack-基础环境
    #linux包之tcpdump之tcpdump命令
    利用OpenCms9提供的模块创建新站点
    Cocos2d-x3.0下实现循环列表
    Modbus读写模拟量寄存器具体解释
    C++ 实践总结
    spring Quartz基于配置文件和注解的实现
    EEPLAT学习
  • 原文地址:https://www.cnblogs.com/jioky/p/15782794.html
Copyright © 2020-2023  润新知