课设黄金矿工小游戏

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组员任务分配

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

原文地址:https://www.cnblogs.com/jioky/p/15782794.html