Страница 1 из 1
DiceWars(Не могу построить территорию для ходов)
Добавлено: 27 дек 2010, 13:29
PastoriXx
Пишу игрушку 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;
}
Re: DiceWars(Не могу построить территорию для ходов)
Добавлено: 27 дек 2010, 15:52
PastoriXx
Почему то смещается вниз(
Код: Выделить всё
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[i][j]=r.nextInt(2);
if(pole[i][j]==1)
k2++;
else k1++;
//if(k2>=24)
//break;
System.out.println(pole[i][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) {}
}
Re: DiceWars(Не могу построить территорию для ходов)
Добавлено: 27 дек 2010, 17:18
PastoriXx
Подправил, выделение работает, теперь думаю как в каждый квадрат вписать значение кубика.
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[i][j] = r.nextInt(24);
pole[i][j] = r.nextInt(2);
if(pole[i][j]==1)
k2++;
else k1++;
//if(k2>=24)
//break;
System.out.println(pole[i][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[i][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) {}
}
Re: DiceWars(Не могу построить территорию для ходов)
Добавлено: 27 дек 2010, 19:06
PastoriXx
Уже сделал, пытаюсь сделать логику игры
Re: DiceWars(Не могу построить территорию для ходов)
Добавлено: 28 дек 2010, 08:54
PastoriXx
Как сделать выделение второго квадрата, после первого?