Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

DiceWars(Не могу построить территорию для ходов)

53K
27 декабря 2010 года
Sawans
17 / / 24.05.2010
Пишу игрушку DiceWars, в качестве курсовика. Столкнулся с такой проблемой, не знаю как определить нажатие мышью по определенному квадрату. Когда нажимаеш на квадрат, его цвет должен поменятся(чтобы было понятно с какой ячейки ты начинаеш ход). Помогите!!!
Код:
package DW;

import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.Rectangle;
import java.awt.Stroke;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;

import javax.swing.JApplet;
import javax.swing.JPanel;

public class Main extends JApplet {

    public void init()
    {
           setLayout(new BorderLayout());
           setSize(400, 400);
           setMinimumSize(new Dimension (400,400));
           
           addMouseListener(mouseListener);
           
    }
        public void paint(Graphics gr) {
            Graphics2D g = (Graphics2D)gr;

            super.paint(g);
            //g.setColor(color1);
            for(int i=0;i<350;i=i+25)
                for(int j=0;j<350;j=j+25)
                {
                    g.draw(new Rectangle2D.Float(25+i, 25+j, 25, 25));
                }
        }
        @Override
        public void paintComponents(Graphics g) {super.paintComponents(g);}
       
        //}
    Color color1 = Color.DARK_GRAY, color2 = Color.YELLOW;

   
}
53K
27 декабря 2010 года
Sawans
17 / / 24.05.2010
Почему то смещается вниз(
Код:
package DW;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import java.util.Random;

import javax.swing.JApplet;

public class DiceMain extends JApplet implements MouseListener {
    /**
     *
     */
    private static final long serialVersionUID = 1L;

    Color color1 = Color.DARK_GRAY, color2 = Color.YELLOW;
    int [][] pole = new int[14][14];
    int k1, k2;
    int x, y;
    Random r = new Random();
    Graphics2D g;
    MouseEvent me;
   
    public void init()
    {
        setLayout(new BorderLayout());
        setSize(400, 400);
        setMinimumSize(new Dimension (400,400));
           
        for(int i=0; i<14;i++)
            for(int j=0; j<14;j++)
            {
                pole[j]=r.nextInt(2);
                if(pole[j]==1)
                    k2++;
                else k1++;
                //if(k2>=24)
                //break;
                System.out.println(pole[j]);
            }
        addMouseListener(this);
    }
        public void paint(Graphics gr) {
            Graphics2D g = (Graphics2D)gr;

            super.paint(g);

            for(int l=0; l<14;l++)
                for(int m=0; m<14;m++)
                {
                    int i = l*25;
                    int j = m*25;
                    if(pole[l][m]==1)
                    {                      
                        g.setColor(Color.MAGENTA);
                        g.fill(new Rectangle2D.Float(24+i, 24+j, 24, 24));
                    }
                    else
                    {                      
                        g.setColor(Color.GREEN);
                        g.fill(new Rectangle2D.Float(24+i, 24+j, 24, 24));
                    }
                }
            //if() чтоб рисовал только после клика мышью
            for(int i=0; i<14;i++)
                if(x<=25*i && x>=25*(i-1))         
                    for(int j=0; j<14;j++)
                        if(y<=25*j && y>=25*(j-1))
                        {
                            g.setColor(Color.DARK_GRAY);                           
                            g.fill(new Rectangle2D.Float(24+25*i, 24+25*j, 24, 24));
                            System.out.println(x+" "+y);
                        }
        }
        @Override
        public void paintComponents(Graphics g) {super.paintComponents(g);}

    public void mouseClicked(MouseEvent me)
    {
        x = me.getX();
        y = me.getY();
        for(int i=0; i<14;i++)
                if(x<=25*i && x>=25*(i-1))         
                    for(int j=0; j<14;j++)
                        if(y<=25*j && y>=25*(j-1))
                        {
                            repaint();
                        }
        System.out.println(x+" "+y);
    }
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}
   
}
53K
27 декабря 2010 года
Sawans
17 / / 24.05.2010
Подправил, выделение работает, теперь думаю как в каждый квадрат вписать значение кубика.
package DW;
Код:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import java.util.Random;

import javax.swing.JApplet;

public class DiceMain extends JApplet implements MouseListener {
    /**
     *
     */
    private static final long serialVersionUID = 1L;

    Color color1 = Color.DARK_GRAY, color2 = Color.YELLOW;
    int [][] pole = new int[14][14];// Массив принадлежности территории, тому или другому игроку.
    int [][] polez = new int[14][14];// Массив с кол-м кубиков.
    int k1, k2;
    int x, y;
    Random r = new Random();
    Graphics2D g;
    MouseEvent me;
   
    public void init()
    {
        setLayout(new BorderLayout());
        setSize(400, 400);
        setMinimumSize(new Dimension (400,400));
           
        for(int i=0; i<14;i++)
            for(int j=0; j<14;j++)
            {
                polez[j] = r.nextInt(24);
                pole[j] = r.nextInt(2);
                if(pole[j]==1)
                    k2++;
                else k1++;
                //if(k2>=24)
                //break;
                System.out.println(pole[j]);
            }
        addMouseListener(this);
    }
        public void paint(Graphics gr) {
            Graphics2D g = (Graphics2D)gr;

            super.paint(g);

            for(int l=0; l<14;l++)
                for(int m=0; m<14;m++)
                {
                    int i = l*25;
                    int j = m*25;
                   
                    //g.setStroke(polez[j]);
                   
                    if(pole[l][m]==1)
                    {                      
                        g.setColor(Color.MAGENTA);
                        g.fill(new Rectangle2D.Float(24+i, 24+j, 24, 24));
                    }
                    else
                    {                      
                        g.setColor(Color.GREEN);
                        g.fill(new Rectangle2D.Float(24+i, 24+j, 24, 24));
                    }
                }
            //if(me.getSource()!=null)
            for(int i=1; i<=15;i++)
                if(x<=25*i && x>=25*(i-1))         
                    for(int j=1; j<=15;j++)
                        if(y<=25*j && y>=25*(j-1))
                        {
                            g.setColor(Color.DARK_GRAY);                           
                            g.fill(new Rectangle2D.Float(25*(i-1)-1, 25*(j-1)-1, 24, 24));
                            System.out.println(x+" "+y);
                        }
            g.setColor(Color.getHSBColor(10, 20, 255));                        
            g.fill(new Rectangle2D.Float(0,0,24,24));
        }
        @Override
        public void paintComponents(Graphics g) {super.paintComponents(g);}
       
       
       
       
       
    public void mouseClicked(MouseEvent me)
    {
        x = me.getX();
        y = me.getY();
        if(x>=24 && y>=24)         
            repaint();     

    }
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}
   
}
53K
27 декабря 2010 года
Sawans
17 / / 24.05.2010
Уже сделал, пытаюсь сделать логику игры
53K
28 декабря 2010 года
Sawans
17 / / 24.05.2010
Как сделать выделение второго квадрата, после первого?
53K
29 декабря 2010 года
Sawans
17 / / 24.05.2010
Игрушку сделал, теперь надо разбить её по классам.
Не знаю как сделать перерисовку из класса SimpleBot. Помогите!!!

Не разбитая на классы:
Код:
public class DiceMain extends JApplet implements MouseListener, ActionListener {
    /**
     *
     */
    private static final long serialVersionUID = 1L;

    static int [][] pole = new int[14][14];// Массив принадлежности территории, тому или другому игроку.
    static String[][] polez = new String[14][14];// Массив с кол-м кубиков.
    int k1, k2, k3;
    int x, y , x1, y1;
   
    Random r = new Random();
    static Graphics2D g, gg;
    static Graphics gr;
    MouseEvent me;
    int player1, player2;//у игрока2 pole =1.
   
    JButton buthod, butend;
    JPanel panel;
    public void init()
    {
        setLayout(new BorderLayout());
        setSize(400, 500);
        setMinimumSize(new Dimension (400,500));
         
        buthod = new JButton("Начать заново");
        butend = new JButton("Закончить ход");     
        panel = new JPanel();
        panel.setBorder(new TitledBorder("Действия"));
        panel.add(buthod);
        panel.add(butend);
        //panel.setPreferredSize(new Dimension(300,100));
        add(panel,BorderLayout.SOUTH);
       
        for(int i=0; i<14;i++)
            for(int j=0; j<14;j++)
            {
                polez[j] = String.valueOf(r.nextInt(4)+1);
                pole[j] = r.nextInt(2);
            }
        addMouseListener(this);
        buthod.addActionListener(this);
        butend.addActionListener(this);
       

       
       
    }
    public void paint(Graphics gr) {
            g = (Graphics2D)gr;
            gg = (Graphics2D)gr;
            super.paint(gr);
            //super.paint(gg);
            for(int l=0; l<14;l++)
                for(int m=0; m<14;m++)
                {
                    int i = l*25;
                    int j = m*25;
                   
                    if(pole[l][m]==1)//игрок2
                    {                      
                        g.setColor(Color.MAGENTA);
                        g.fill(new Rectangle2D.Float(24+i, 24+j, 24, 24));
                    }
                    if(pole[l][m]==0)//игрок1
                    {                      
                        g.setColor(Color.GREEN);
                        g.fill(new Rectangle2D.Float(24+i, 24+j, 24, 24));
                    }
                    String f = polez[l][m];
                    g.setColor(Color.BLACK);
                    gr.drawString(f,i+31,j+39);
                }
            if(x!=0)
                for(int i=1; i<15;i++)
                    if(x<=25*(i+1) && x>=25*(i))           
                        for(int j=1; j<15;j++)
                            if(y<=25*(j+1) && y>=25*(j))
                            if(pole[i-1][j-1]!=1)
                            {
                                gg.setColor(Color.DARK_GRAY);                          
                                gg.fill(new Rectangle2D.Float(25*i-1, 25*j-1, 24, 24));
                                System.out.println(x+" "+y +" ");
                                k1 = 25*i-1;
                                k2 = 25*j-1;
                                String f = polez[i-1][j-1];
                                gg.setColor(Color.WHITE);
                                gr.drawString(f,25*(i-1)+30,25*(j-1)+38);
                               
                                pole[i-1][j-1]=2;
                                x=0;
                            }

            if(x1!=0)
                if(x1>(k1+12-37) && x1<(k1+12+37) && y1>(k2+12-37) && y1<(k2+12+37))
                for(int i=1; i<15;i++)
                    if(x1<=25*(i+1) && x1>=25*i)           
                        for(int j=1; j<15;j++)
                            if(y1<=25*(j+1) && y1>=25*j)
                            if(pole[i-1][j-1]!=0)
                            {
                                gg.setColor(Color.BLUE);                           
                                gg.fill(new Rectangle2D.Float(25*i-1, 25*j-1, 24, 24));
                                System.out.println(x1+" "+y1 +" ");
                               
                                String f = polez[i-1][j-1];
                                gg.setColor(Color.WHITE);
                                gr.drawString(f,25*(i-1)+30,25*(j-1)+38);
                               
                                pole[i-1][j-1]=3;
                                x1=0;
                                for(int i1=0; i1<14;i1++)
                                    for(int j1=0; j1<14;j1++)
                                        if(pole[i1][j1]==2)
                                        {
                                            player1 = Integer.parseInt(polez[i1][j1]);//*(r.nextInt(5)+1);
                                            for(int l=0; l<14;l++)
                                                for(int m=0; m<14;m++)
                                                    if(pole[l][m]==3)
                                                    {
                                                        player2 = Integer.parseInt(polez[l][m]);//*(r.nextInt(5)+1);
                                                        if(player1>player2)
                                                        {
                                                            pole[i1][j1] = 0;
                                                            pole[l][m] = 0;
                                                            polez[l][m] = String.valueOf((Integer.parseInt(polez[i1][j1])-1));
                                                            polez[i1][j1] = String.valueOf(1);
                                                            repaint();
                                                            System.out.println(polez[l][m]+"player1 больше");
                                                        }
                                                        else
                                                        {
                                                            pole[i1][j1] = 0;
                                                            pole[l][m] = 1;
                                                            polez[i1][j1] = String.valueOf(1);
                                                            repaint();
                                                            System.out.println(pole[i1][j1]+ "bot больше");
                                                        }
                                                    }
                                        }
                            }
        }

    public void paintComponents(Graphics g) {super.paintComponents(g);}
       
    public void actionPerformed(ActionEvent ae)
        {
            if (ae.getSource()== buthod){}

            if (ae.getSource()== butend)//Бот+добавление очков
            {
                for(int i=0; i<14;i++)
                    for(int j=0; j<14;j++)
                        if(pole[j]==0)
                        {  
                            if(Integer.parseInt(polez[j])!=4)
                                polez[j]=String.valueOf(Integer.parseInt(polez[j])+1);
                        }
                           
                for(int i=0; i<14;i++)
                    for(int j=0; j<14;j++)
                        if(pole[j]==1)
                        {
                            if(i!=0)
                            {
                                if(pole[i-1][j]==0)
                                    if(Integer.parseInt(polez[j])>Integer.parseInt(polez[i-1][j]))
                                    {
                                        pole[i-1][j]=1;
                                        polez[j]=polez[i-1][j];
                                        repaint();
                                    }
                                if(j!=0)
                                if(pole[i-1][j-1]==0)
                                    if(Integer.parseInt(polez[j])>Integer.parseInt(polez[i-1][j-1]))
                                    {
                                        pole[i-1][j-1]=1;
                                        polez[j]=polez[i-1][j-1];
                                        repaint();
                                    }
                                if(j!=13)
                                if(pole[i-1][j+1]==0)
                                    if(Integer.parseInt(polez[j])>Integer.parseInt(polez[i-1][j+1]))
                                    {
                                        pole[i-1][j+1]=1;
                                        polez[j]=polez[i-1][j+1];
                                        repaint();
                                    }
                            }
                            if(i!=13)
                            {
                                if(pole[i+1][j]==0)
                                    if(Integer.parseInt(polez[j])>Integer.parseInt(polez[i+1][j]))
                                    {
                                        pole[i+1][j]=1;
                                        polez[j]=polez[i+1][j];
                                        repaint();
                                    }
                                if(j!=13)
                                if(pole[i+1][j+1]==0)
                                    if(Integer.parseInt(polez[j])>Integer.parseInt(polez[i+1][j+1]))
                                    {
                                        pole[i+1][j+1]=1;
                                        polez[j]=polez[i+1][j+1];
                                        repaint();
                                    }
                            }
                            if(j!=13)
                            if(pole[j+1]==0)
                                if(Integer.parseInt(polez[j])>Integer.parseInt(polez[j+1]))
                                {
                                    pole[j+1]=1;
                                    polez[j]=polez[j+1];
                                    repaint();
                                }
                            if(j!=0)
                            {
                                if(i!=13)
                                if(pole[i+1][j-1]==0)
                                    if(Integer.parseInt(polez[j])>Integer.parseInt(polez[i+1][j-1]))
                                    {
                                        pole[i+1][j-1]=1;
                                        polez[j]=polez[i+1][j-1];
                                        repaint();
                                    }
                                if(pole[j-1]==0)
                                    if(Integer.parseInt(polez[j])>Integer.parseInt(polez[j-1]))
                                    {
                                        pole[j-1]=1;
                                        polez[j]=polez[j-1];
                                        repaint();
                                    }
                            }
   
                                if(Integer.parseInt(polez[j])!=4)
                                    polez[j]=String.valueOf(Integer.parseInt(polez[j])+1);
                        }
            }  
        }
       
       
       
    public void mouseClicked(MouseEvent me)
    {
        if(me.getButton()==MouseEvent.BUTTON1)
        {
            x = me.getX();
            y = me.getY();
            if(x>=24 && y>=24)         
                repaint(); 
        }
        if(me.getButton()==MouseEvent.BUTTON3)
        {
            x1 = me.getX();
            y1 = me.getY();
            if(x1>=24 && y1>=24)           
                repaint();
        }
    }
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}
}


Класс SimpleBot :
Код:
package DW;

public class SimpleBot extends DiceMain
{

public static void main(String[] args) {
   
    for(int i=0; i<14;i++)
        for(int j=0; j<14;j++)
            if(pole[j]==1)
            {
                if(i!=0)
                {
                    if(pole[i-1][j]==0)
                        if(Integer.parseInt(polez[j])>Integer.parseInt(polez[i-1][j]))
                        {
                            pole[i-1][j]=1;
                            polez[j]=polez[i-1][j];
                            paint(gr);
                        }
                    if(j!=0)
                    if(pole[i-1][j-1]==0)
                        if(Integer.parseInt(polez[j])>Integer.parseInt(polez[i-1][j-1]))
                        {
                            pole[i-1][j-1]=1;
                            polez[j]=polez[i-1][j-1];
                            repaint();
                        }
                    if(j!=13)
                    if(pole[i-1][j+1]==0)
                        if(Integer.parseInt(polez[j])>Integer.parseInt(polez[i-1][j+1]))
                        {
                            pole[i-1][j+1]=1;
                            polez[j]=polez[i-1][j+1];
                            repaint();
                        }
                }
                if(i!=13)
                {
                    if(pole[i+1][j]==0)
                        if(Integer.parseInt(polez[j])>Integer.parseInt(polez[i+1][j]))
                        {
                            pole[i+1][j]=1;
                            polez[j]=polez[i+1][j];
                            repaint();
                        }
                    if(j!=13)
                    if(pole[i+1][j+1]==0)
                        if(Integer.parseInt(polez[j])>Integer.parseInt(polez[i+1][j+1]))
                        {
                            pole[i+1][j+1]=1;
                            polez[j]=polez[i+1][j+1];
                            repaint();
                        }
                }
                if(j!=13)
                if(pole[j+1]==0)
                    if(Integer.parseInt(polez[j])>Integer.parseInt(polez[j+1]))
                    {
                        pole[j+1]=1;
                        polez[j]=polez[j+1];
                        repaint();
                    }
                if(j!=0)
                {
                    if(i!=13)
                    if(pole[i+1][j-1]==0)
                        if(Integer.parseInt(polez[j])>Integer.parseInt(polez[i+1][j-1]))
                        {
                            pole[i+1][j-1]=1;
                            polez[j]=polez[i+1][j-1];
                            repaint();
                        }
                    if(pole[j-1]==0)
                        if(Integer.parseInt(polez[j])>Integer.parseInt(polez[j-1]))
                        {
                            pole[j-1]=1;
                            polez[j]=polez[j-1];
                            repaint();
                        }
                }

                    if(Integer.parseInt(polez[j])!=4)
                        polez[j]=String.valueOf(Integer.parseInt(polez[j])+1);
            }
}
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог