Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2013, 13:58   #1
ronny137
Пользователь
 
Регистрация: 03.12.2009
Сообщений: 52
По умолчанию диаграмма по проге

Сделал прогу, а диаграмму составить не могу, даже не представляю как это сделать. Надо составить UML-диаграмму прецедентов. Прочитал на вики, что надо описать, что с чем взаимодействует, но все равно не понимаю, как ее рисовать.

Мир Вампуса – это пещера, состоящая из залов. Среда разделена на клетки. Вампус – зверь, который поедает всех в своем зале. Охотники ищут в пещере золото. Охотники может убить Вампуса единственной стрелой, выстрелив в прямом направлении. В пещере имеются ямы, в которые может провалиться охотник. Целью охотников является получение золота. Местоположение ям, золота и Вампуса каждый раз выбирается случайно.
Охотник имеет датчики: запаха, ветра блеска (золота), удара (о стену), звука (крик пораженного Вампуса). Агент может двигаться вперед, поворачиваться на 90 градусов, стрелять в прямом направлении (единственной стрелой). Агент знает правила действующие в среде, знает свои координаты, но не знает конфигурацию среды. Вампус не может двигаться.
1. javaapplication1
2.point.java
3. hanter.java
4.wampus.java
5. world.java

Код:
package javaapplication1;
 
 
import java.io.*;
import java.awt.*;    
import java.applet.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.ImageObserver;
import java.beans.PropertyChangeListener;
import java.lang.reflect.InvocationTargetException;
import java.text.AttributedCharacterIterator;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.rmi.CORBA.Tie;
import javax.swing.Action;
import javax.swing.Timer;
 
  
public class JavaApplication1 extends Applet implements Runnable
{
    public static int WIDTH = 10;
    public static int HEIGHT = 10;
    static Graphics g;
    Thread thread;
    Timer t;
    world w;
            
    public void paint(Graphics g) {
          int step=20;
       g.fillRect(0, 0, 20, 20);       
       for(int i=0;i<10;i++){
       for(int j=0;j<10;j++){
           if(world.myWorld[i][j].type==0)
           {
               if(world.myWorld[i][j].was==false)
               {
                    g.setColor(Color.LIGHT_GRAY);
                    g.fillRect(i*step, j*step, 20, 20);                   
               }
               else
               {
                    g.setColor(Color.WHITE);
                    g.fillRect(i*step, j*step, 20, 20);
               }
           }     
           if(world.myWorld[i][j].type==1){
 
           g.setColor(Color.ORANGE);
           g.fillRect(i*step, j*step, 20, 20);
       g.setColor(Color.ORANGE);
       
       if (world.Hanter.forward == 101)
       g.drawLine(i*step+20, j*step+16, i*step, j*step+16);
       
       if (world.Hanter.forward == 102)
       g.drawLine(i*step+20, j*step+4, i*step, j*step+4);
       
       if (world.Hanter.forward == 103)
       g.drawLine(i*step+20, j*step+16, i*step, j*step+16);
       
       if (world.Hanter.forward == 104)
       g.drawLine(i*step+16, j*step+20, i*step+16, j*step);
       }
       if(world.myWorld[i][j].type==2){
           g.setColor(Color.BLUE);
           g.fillRect(i*step, j*step, 20, 20);}
       if(world.myWorld[i][j].type==3){
           g.setColor(Color.BLACK);
           g.fillRect(i*step, j*step, 20, 20);}
       if(world.myWorld[i][j].type==4){
           g.setColor(Color.YELLOW);
           g.fillRect(i*step, j*step, 20, 20);}
       if(world.myWorld[i][j].wampus>0)
       {
           g.setColor(Color.GREEN);
           g.fillRect(i*step, j*step, 20, 20);
       }
       }
       }
        for (int i=0;i<11;i++){
            g.setColor(Color.BLACK);
          g.drawLine(0,i*step, 200, i*step);
          g.drawLine(i*step, 0, i*step,200); 
       }
            }
 
    public void init() {
        w = new world();
        world.init_world();
        t = new Timer(200, ActionToPerform());
        System.out.println("init");
    }
 
    @Override
    public void run() {    
    }
 
    public void start() 
    {
        t.start();
        
    }
    private ActionListener ActionToPerform()
    {
        return new ActionListener() {
 
            public void actionPerformed(ActionEvent ae) {
                repaint();
                if(!world.action())
                    t.stop();             
            }
        };
    }
    public void stop() {
        t.stop();      
      }
     
     public void destroy() {
         System.out.println("Method destroy()");
      }   
}
ronny137 вне форума Ответить с цитированием
Старый 12.06.2013, 14:00   #2
ronny137
Пользователь
 
Регистрация: 03.12.2009
Сообщений: 52
По умолчанию

Код:
package javaapplication1;
 
 
public class Point 
{
   public int x;
   public int y;
    public int type;
    public int done; //нужна для поиска пути
    public boolean was; //true посещена, false нет
    public int pit; //0 неисслед, -1 точно нет ямы, 1-3 - возможно яма, 4 - точно яма
    public int wampus;//0 неисслед, -1 точно ничего нет, 1 возможный вампус, -2 мертвый вампус
    public int gold;//0 неисслед, -1 точно ничего, 1 возможное золото, 5 золото
 
public Point()
        
{
   type=0;
   was=false;
   done=-1;
   gold=0;
   pit=0;
   wampus=0;
}
 
public Point(int x,int y)        
  {
    this.x=x;
    this.y=y;
    type=0;
    was=false;
    done=-1;
    gold=0;
    pit=0;
    wampus=0;
  }
}
Код:
package javaapplication1;
 
public class hanter {
    static int x,y;
    static boolean k;
    static int growl=5;//рычание
    static int breeze=6;//сквозняк
    static int glitter=7;//блеск
    static int bump = 8;
    // направления
    final int SOUTH = 101;
        final int NORTH = 102;
    final int WEST = 103;
    final int EAST = 104;
    int forward;
    final int FRW = 105;
    final int LEFT = 106;
    final int RIGHT = 107;
    public hanter()
    {
        x=0;
        y=0;
    }
 
    public hanter(int x,int y)
    {
        this.x=x;
        this.y=y;
    }
 
   int scan (int target)
   {
       int p=0;
            if(x<9)
                if(world.myWorld[x+1][y].type==target)
                    p=1;
            if (x>0)
                if(world.myWorld[x-1][y].type==target)
                    p=1;
            if (y<9)
                if(world.myWorld[x][y+1].type==target)
                    p=1;
            if (y>0)
                if(world.myWorld[x][y-1].type==target)
                    p=1;
            return p;
   }
      
     
 Point p1 = new Point();  
 
 int step(Point p1)
     {
         System.out.print(" STEP to ");
          System.out.print(p1.x);
           System.out.print(".");
           System.out.print(p1.y);
            System.out.print("! ");
           int x_x = this.x-p1.x;
           int y_y = this.y-p1.y;
           if (x_x==0)
               if (y_y==1) this.forward=NORTH;
               else this.forward=SOUTH;
           else
               if (x_x==1)this.forward=WEST;
               else this.forward=EAST;
           
 
         this.x=p1.x;
         this.y=p1.y;
         return 0;      
     }
 
}
Код:
package javaapplication1;
 
 
public class wampus {
    int x;
    int y;
    public wampus()
    {
        x=(int)(Math.random()*10);
        if(x>1)
            y=(int)(Math.random()*10);
        else
            y=(int)(2+Math.random()*8);
    }
    public wampus (int x,int y)
    {
        this.x= x;
        this.y= y;
    }
    
}
ronny137 вне форума Ответить с цитированием
Старый 12.06.2013, 14:02   #3
ronny137
Пользователь
 
Регистрация: 03.12.2009
Сообщений: 52
По умолчанию

Код:
package javaapplication1;
 
import java.awt.Color;
import java.awt.Graphics;
import java.util.*;
import sun.net.www.http.Hurryable;
 
 
class world
{
    static int xanter=1;
    static int wampus=2;
    static int pit=3;
    static int gold=4;
    static int MAP_SIZE_X = 10;
    static int MAP_SIZE_Y = 10;
    public static hanter Hanter = new hanter();
    private static wampus Wampus = new wampus();
    static List<Point>list;
    static List<Point>route;
    static Point myWorld[][] = new Point[MAP_SIZE_X][MAP_SIZE_Y];
   
    private static void FillWorld(int value,int count)
    {
        for (int i=0;i<count;i++)
            while(true)
            {
                int x = (int)(Math.random()*MAP_SIZE_X);
                int y = (int)(Math.random()*MAP_SIZE_Y);
                if (myWorld[x][y].type==0)
                {
                    myWorld[x][y].type=value;
                    if (value == xanter)
                    {
                        Hanter.x= x;
                        Hanter.y= y;
                    }
                    if (value == wampus)
                    {
                        Wampus.x= x;
                        Wampus.y= y;
                    }
                    break;
                }
            }
    }
    
        
 
     public static void WPrint()
     {
         System.out.println();
         System.out.println("World_done:");
         for(int i=0;i<10;i++)
         {
             for(int j=0;j<10;j++)
             {
                 System.out.print(myWorld[i][j].done);
             }
             System.out.println();
         }
                 
     }
     
    public world()
    {
        list = new ArrayList<Point>();
        route = new ArrayList<Point>();
    }
    
    public static void init_world()
    {
        for (int i=0;i<10;i++)
            for (int j=0;j<10;j++)
            {
               myWorld[i][j]= new Point(i,j);
            }
        
       myWorld[Hanter.x][Hanter.y].type=xanter; 
       
       FillWorld(pit, 5);
       FillWorld(gold, 1);
       FillWorld(wampus,1);
       System.out.println("init world");             
    }
    public static void Near_Status_Pit(int x,int y,int status)
    {
        if(x<9 && myWorld[x+1][y].pit != -1)myWorld[x+1][y].pit=status;
        if(x>0 && myWorld[x-1][y].pit != -1)myWorld[x-1][y].pit=status;
        if(y<9 && myWorld[x][y+1].pit != -1)myWorld[x][y+1].pit=status;
        if(y>0 && myWorld[x][y-1].pit != -1)myWorld[x][y-1].pit=status;
    }
    
        public static void Near_Status_Gold(int x,int y,int status)
    {
        if(x<9 && myWorld[x+1][y].gold != -1)myWorld[x+1][y].gold=status;
        if(x>0 && myWorld[x-1][y].gold != -1)myWorld[x-1][y].gold=status;
        if(y<9 && myWorld[x][y+1].gold != -1)myWorld[x][y+1].gold=status;
        if(y>0 && myWorld[x][y-1].gold != -1)myWorld[x][y-1].gold=status;
    }
        public static void Near_Status_Wampus(int x,int y,int status)
    {
        if(x<9) 
                if (myWorld[x+1][y].wampus != -1)myWorld[x+1][y].wampus=status;
        if(x>0)  
            if(myWorld[x-1][y].wampus != -1)myWorld[x-1][y].wampus=status;
        if(y<9) 
            if(myWorld[x][y+1].wampus != -1)myWorld[x][y+1].wampus=status;
        if(y>0)  
            if(myWorld[x][y-1].wampus != -1)myWorld[x][y-1].wampus=status;
    }
        
 
 
        public static void Update(int x, int y)
        {
            System.out.println();
            
            if(!list.contains(myWorld[x][y]))
            {   
                XYList();
ronny137 вне форума Ответить с цитированием
Старый 12.06.2013, 14:03   #4
ronny137
Пользователь
 
Регистрация: 03.12.2009
Сообщений: 52
По умолчанию

продолжение world.java
Код:
 System.out.print(myWorld[x][y].x);
                System.out.print(".");
                System.out.print(myWorld[x][y].y);
                System.out.print(" done: ");
                System.out.print(myWorld[x][y].done);
                System.out.print(" gold: ");
                System.out.print(myWorld[x][y].gold);
                System.out.print(" pit: ");
                System.out.print(myWorld[x][y].pit);
                System.out.print(" type: ");
                System.out.print(myWorld[x][y].type);
                System.out.print(" wapus: ");
                System.out.print(myWorld[x][y].wampus);
            if (myWorld[x][y].was==false)
            {
                System.out.print(" :: ");
                if ((myWorld[x][y].pit == -1) && (myWorld[x][y].wampus ==-1))
                    { 
                        System.out.print(" sequre ");
                        list.add(0,myWorld[x][y]);
                        XYList();
                        
                    }
                else 
                    if(!list.contains(myWorld[x][y]))
                    {
                        if(myWorld[x][y].pit<3 || myWorld[x][y].wampus<3)
                        {System.out.print(" dd "); 
                        XYList();
                        }
                    }
                        
            }
            System.out.print("::: ");
            Point tmp = new Point();
            
            for (int i=0;i<list.size();i++) //если какая-то клетка посещена,
            {                               //или яма, или вампус, она удаляется
               tmp=list.get(i);
               if ((tmp.was==true) || (tmp.type==2) || (tmp.type==3))
               {
                    System.out.print("was: ");
                    System.out.print(tmp.x);
                    System.out.print(".");
                    System.out.print(tmp.y);
                    System.out.print(" ");
                   while (!list.contains(tmp))
                       list.remove(tmp);
               }
            }
            
            for(int i=0;i<list.size();i++)//золото добавляется в начало списка 
            {             
                tmp=list.get(i);
                if (tmp.gold>0 && tmp.pit<1 && tmp.wampus<1) 
                {
                    System.out.print("gold!: ");
                    System.out.print(tmp.x);
                    System.out.print(".");
                    System.out.print(tmp.y);
                    System.out.print(" ");
                    while (!list.contains(tmp)) 
                        list.remove(tmp);
                    list.add(0,tmp);
                }
            }
            }
               System.out.print("%");
               XYList();
        }
 
        public static void XYList()
        {
            System.out.print("(List points: ");
            for (int i=0;i<list.size();i++)
            {   
                System.out.print(list.get(i).x);
                System.out.print(".");
                System.out.print(list.get(i).y);
                System.out.print(" ");
            }
            System.out.print(") ");
        }
        
        public static void ROADList()
        {
            System.out.print("<Road points: ");
            for (int i=0;i<route.size();i++)
            {   
                System.out.print(route.get(i).x);
                System.out.print(".");
                System.out.print(route.get(i).y);
                System.out.print("-");
            }
            System.out.print("> ");
        }
                        
    public static void Update_Near(int x,int y)
    {
        
        System.out.println("Start Update ");
        if(x<9) {Update(x+1,y);}
        if(x>0) {Update(x-1,y);}
        if(y<9) {Update(x,y+1);}
        if(y>0) {Update(x,y-1);}
    }    
        
    
    public static boolean action()
    {
        if(myWorld[Hanter.x][Hanter.y].was!=true)
        {
          myWorld[Hanter.x][Hanter.y].was=true;
          Scaning();
          list.remove(myWorld[Hanter.x][Hanter.y]);
        
          if(!list.isEmpty())
          {
        if(!Search(myWorld[Hanter.x][Hanter.y],list.get(0)).isEmpty())
          {
              System.out.println("::");
              ROADList();
           while (!route.isEmpty())  
           {
ronny137 вне форума Ответить с цитированием
Старый 12.06.2013, 14:04   #5
ronny137
Пользователь
 
Регистрация: 03.12.2009
Сообщений: 52
По умолчанию

продолжение world.java
Код:
System.out.print(route.get(route.size()-1).x);
             System.out.print(route.get(route.size()-1).y);
             myWorld[Hanter.x][Hanter.y].type=0;
             Hanter.step(route.get(route.size()-1));
             if(route.get(route.size()-1).type==4)
             {
                 myWorld[Hanter.x][Hanter.y].type=xanter;
                 System.out.println();
                 System.out.println("End. Gold is found");
                 return false;
             }
             route.remove(route.size()-1); 
             ROADList();
             
              myWorld[Hanter.x][Hanter.y].type=xanter;
              System.out.print("cicle ");
           }
          }
          }
        else
        {
            System.out.println("cicle ");
            System.out.println("End");
            return false;
        }
        } 
        return true;
    }
 
      public static List Search(Point A,Point B)
    {
        System.out.println();
        System.out.print("Search way:");
        System.out.print(A.x);
        System.out.print(".");
        System.out.print(A.y);
        System.out.print("-");
        System.out.print(B.x);
        System.out.print(".");
        System.out.println(B.y);
        route.clear();
        for (int i=0;i<10;i++)
            for (int j=0;j<10;j++)
            {
               myWorld[i][j].done=-1;
            }
        A.done=0;
        int f=A_Star(A,B,0);
        if (f==0) 
        {
            System.out.println("Not enable point");
        }
        
        if (B.done==-1) 
        {
            System.out.println("Route not found");
        }
        
        route.add(B);
        
        while (B.done!=0)
        {
            if (B.x<9 && B.done - myWorld[B.x+1][B.y].done==1)
            {
                route.add(myWorld[B.x+1][B.y]);
                B=myWorld[B.x+1][B.y];
            }
            else
            {
                if (B.x>0 && B.done - myWorld[B.x-1][B.y].done==1)
                    {
                        route.add(myWorld[B.x-1][B.y]);
                        B=myWorld[B.x-1][B.y];
                    }
                else
                {
                    if (B.y>0 && B.done - myWorld[B.x][B.y-1].done==1)
                    {
                        route.add(myWorld[B.x][B.y-1]);
                        B=myWorld[B.x][B.y-1];
                    }
                    else
                    {
                        if (B.y<9 && B.done - myWorld[B.x][B.y+1].done==1)
                        {
                            route.add(myWorld[B.x][B.y+1]);
                            B=myWorld[B.x][B.y+1];
                        }
                    }
                }
            }
        }
        ROADList();
        return route;
    }
      
           
      public static int A_Star (Point A, Point B,int index)
     {
         int f=0;
         if (A.x>0 && (myWorld[A.x-1][A.y].was==true || myWorld[A.x-1][A.y]==B) &&
                 (myWorld[A.x-1][A.y].done==-1 || myWorld[A.x-1][A.y].done>index+1))
                 {
                     myWorld[A.x-1][A.y].done=index+1;
                     A_Star(myWorld[A.x-1][A.y],B,index+1);
                     f=1;
                 }
         if (A.x<9 && (myWorld[A.x+1][A.y].was==true || myWorld[A.x+1][A.y]==B) &&
                 (myWorld[A.x+1][A.y].done==-1 || myWorld[A.x+1][A.y].done>index+1))
                 {
                     myWorld[A.x+1][A.y].done=index+1;
                     A_Star(myWorld[A.x+1][A.y],B,index+1); 
                     f=1;
                 }
         if (A.y>0 && (myWorld[A.x][A.y-1].was==true || myWorld[A.x][A.y-1]==B) &&
                 (myWorld[A.x][A.y-1].done==-1 || myWorld[A.x][A.y-1].done>index+1))
                 {
                     myWorld[A.x][A.y-1].done=index+1;
                     A_Star(myWorld[A.x][A.y-1],B,index+1);        
                     f=1;
                 }
         if (A.y<9 && (myWorld[A.x][A.y+1].was==true || myWorld[A.x][A.y+1]==B) &&
                 (myWorld[A.x][A.y+1].done==-1 || myWorld[A.x][A.y+1].done>index+1))
                 {
                     myWorld[A.x][A.y+1].done=index+1;
                     A_Star(myWorld[A.x][A.y+1],B,index+1); 
                     f=1;
                 }
        // WPrint();
         return f;
             
     }
     
    
    public static void Scaning ()
        {
ronny137 вне форума Ответить с цитированием
Старый 12.06.2013, 14:05   #6
ronny137
Пользователь
 
Регистрация: 03.12.2009
Сообщений: 52
По умолчанию

продолжение world.java
Код:
            System.out.println("scaning start");
            if(Hanter.scan(3) != 1)
            Near_Status_Pit(Hanter.x,Hanter.y,-1);
        else
            Near_Status_Pit(Hanter.x,Hanter.y,myWorld[Hanter.x][Hanter.y].pit+1);
        System.out.print("scaning 33%... ");
        
        if(Hanter.scan(2) != 1)
            Near_Status_Wampus(Hanter.x,Hanter.y,-1);
        else
            Near_Status_Wampus(Hanter.x,Hanter.y,(myWorld[Hanter.x][Hanter.y].wampus)+1);
        System.out.print("66%... ");
       
        if(Hanter.scan(4) != 1)
            Near_Status_Gold(Hanter.x,Hanter.y,-1);
        else
            Near_Status_Gold(Hanter.x,Hanter.y,myWorld[Hanter.x][Hanter.y].gold+1);
        System.out.println("100%");
        Update_Near(Hanter.x,Hanter.y);
        }
       
}
ronny137 вне форума Ответить с цитированием
Старый 12.06.2013, 14:26   #7
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Ничего себе кодик....
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
О проге XnView Ципихович Эндрю Софт 5 12.01.2013 13:31
Проблема в проге!!! RaZZoR Visual C++ 5 09.06.2011 00:27
нестыковка в проге С++... potap88 Общие вопросы C/C++ 8 27.12.2009 20:13
Не точности по проге Sasuke-sama Общие вопросы C/C++ 3 01.06.2009 19:51
Вопрос по проге Smorodinka Microsoft Office Excel 7 06.06.2008 23:10