面向对象设计(黄金矿工)

发布时间:2022-06-21 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了面向对象设计(黄金矿工)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
成员 分配
陈旭佳 抓取判定,多个金块设计,红线摇摆 组长
陈娅妮 积分状态设定,计时效果,商店购物 组员

前期功能架构图

面向对象设计(黄金矿工)

UML图

面向对象设计(黄金矿工)

项目运行截图

面向对象设计(黄金矿工)

面向对象设计(黄金矿工)

面向对象设计(黄金矿工)

面向对象设计(黄金矿工)

关键代码

1.抓取代码

addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                super.mouseClicked(e);
                switch (state){
                    case 0:
                        if(e.getButton()==3){
                            state=1;
                            bg.startTime = System.currentTimeMillis();
                        }
                        break;
                    case 1:
                        //左右摇摆,点击左键
                        if(e.getButton()==1&&line.state==0)
                        {line.state=1;}
                        //抓取返回,点击右键
                        if(e.getButton()==3&&line.state==3&&Bg.waterNum>0){
                            Bg.waterFlag=true;
                            Bg.waterNum--;
                        }
                        break;
                    case 2:
                        if(e.getButton()==1){
                            bg.shop=true;
                        }
                        if (e.getButton()==3){
                            state=1;
                            bg.startTime = System.currentTimeMillis();
                        }
                        break;
                    case 3:
                    case 4:
                        if(e.getButton()==1){
                            state=0;
                            bg.reGame();
                            line.reGame();
                        }
                        break;
                    default:
                }
 
            }

2.积分算法

    void paintSelf(Graphics g){
        g.drawImage(bg1,0,0,null);
        g.drawImage(bg,0,200,null);
        switch (GameWin.state){
            case 0:
                drawWord(g,80,Color.green,"准备开始",200,400);
                break;
            case 1:
                g.drawImage(peo,310,50,null);
                drawWord(g,30,Color.black,"积分:"+count,30,150);
                //药水组件
                g.drawImage(water,450,40,null);
                drawWord(g,30,Color.black,"*"+waterNum,510,70);
                //关卡数
                drawWord(g,20,Color.black,"第"+level+"关",30,60);
                //目标积分
                drawWord(g,30,Color.black,"目标"+goal,30,110);
                //时间组件
                endTime = System.currentTimeMillis();
                long tim = 20-(endTime-startTime)/1000;
                drawWord(g,30,Color.black,"时间:"+(tim>0?tim:0),520,150);
                break;
            case 2:
                g.drawImage(water,300,400,null);
                drawWord(g,30,Color.black,"价格:"+price,300,500);
                drawWord(g,30,Color.black,"是否购买?",300,550);
                if(shop){
                    count = count-price;
                    waterNum++;
                    shop=false;
                    GameWin.state=1;
                    startTime=System.currentTimeMillis();
                }
                break;
            case 3:
                drawWord(g,80,Color.cyan,"失败",250,350);
                drawWord(g,80,Color.cyan,"积分:"+count,200,450);
                break;
            case 4:
                drawWord(g,80,Color.red,"成功",250,350);
                drawWord(g,80,Color.red,"积分:"+count,200,450);
                break;
            default:
        }
 
 
    }

3.绘制

void paintSelf(Graphics g){
        logic();
        switch (state){
            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.flag){
                            m=obj.m;
                            obj.x=endx-obj.getWidth()/2;
                            obj.y=endy;
                            if(length<=MIN_length){
                                obj.x=-150;
                                obj.y=-150;
                                obj.flag=false;
                                //加分
                                Bg.count+=obj.count;
                                Bg.waterFlag=false;
                                state=0;
                            }
                            if(Bg.waterFlag){
                                if(obj.type==1){
                                    //金块
                                    m=1;
                                }else if(obj.type==2){
                                    //石块
                                    obj.x=-150;
                                    obj.y=-150;
                                    obj.flag=false;
                                    Bg.waterFlag=false;
                                    state=2;
                                }
                            }
                        }
                    }
                }
                try {
                    Thread.sleep(m);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                break;
 
                default:
        }
    }

改进及感想

1.课设时间太少,期末周考试较多被其他科目时间占用,并没有充足时间准备 2.完善算法 3.对于本次课设,虽然显得很匆忙,但小组成员的能力都有了较大提升,对面向对象设计也有了更好的认知

脚本宝典总结

以上是脚本宝典为你收集整理的面向对象设计(黄金矿工)全部内容,希望文章能够帮你解决面向对象设计(黄金矿工)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: