|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
Lordi : 2 Новичок
|
Фев 17, 2012 13:16 |
|
|
Пишу игру "Пятнашки". Проблема в том, что на кнопки нужно наложить картинку, чтобы можно было собрать картинку!!!
Вот код:
import java.awt.Container;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Pyatnashki extends JFrame {
class Image`
public ImagePanel() throws IOException
{
image = ImageIO.read(new File("C://zzz.jpg")); // читаем изображение из файла.
}
public void paintComponent(Graphics j) {
super.paintComponent(j);
j.drawImage(image, 100, 100, null); // выводим изображение
}
private Image image;
}
/* class ImageButton extends JButton{
public ImageButton() throws IOException
{
image = ImageIO.read(new File("C://zzz.jpg")); // читаем изображение из файла.
}
public void paintComponent(Graphics j) {
super.paintComponent(j);
j.drawImage(image, 100, 100, null); // выводим изображение
}
private Image image;
}
*/
Image img = new ImageIcon("Points/2.png").getImage();
private JPanel panel = new JPanel(new GridLayout(4, 4, 2, 2));
private JMenuBar menu = null;
private final String fileItems[] = new String []{"New game", "exit"};
private static Random generator = new Random();
private int[][] numbers = new int[4][4];
public Pyatnashki() {
super("Пятнашки");
setBounds(200, 200, 350, 350);
setResizable(false);
createMenu();
setJMenuBar(menu);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container container = getContentPane();
init();
panel.setDoubleBuffered(true);
container.add(panel);
repaintField();
}
public void init() {
int[] invariants = new int[16];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
numbers[i][j] = 0;
invariants[i*4 + j] = 0;
}
}
for (int i = 1; i < 16; i++) {
int k;
int l;
do {
k = generator.nextInt(100) % 4;
l = generator.nextInt(100) % 4;
}
while (numbers[k][l] != 0);
numbers[k][l] = i;
invariants[k*4+l] = i;
}
boolean change = true;
int counter = 1;
while (change) {
change = false;
for (int i = 0; i < 16; i++) {
if (invariants[i] != i) {
for (int j = 0; j < 16; j++) {
if (invariants[j] == i) {
int temp = invariants[i];
invariants[i] = invariants[j];
invariants[j] = temp;
change = true;
counter++;
break;
}
}
break;
}
}
}
if (counter % 2 != 0) {
int temp = numbers[0][0];
numbers[0][0] = numbers[3][3];
numbers[3][3] = temp;
}
}
public void repaintField() {
panel.removeAll();
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
JButton button = new JButton(Integer.toString(numbers[i][j]));
// ImageButton button = new ImageButton();
button.setFocusable(false);
panel.add(button);
if (numbers[i][j] == 0) {
button.setVisible(false);
} else
button.addActionListener(new ClickListener());
}
}
panel.validate();
}
public boolean checkWin() {
boolean status = true;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (i == 3 && j > 2)
break;
if (numbers[i][j] != i * 4 +
j + 1) {
status = false;
}
}
}
return status;
}
private void createMenu() {
menu = new JMenuBar();
JMenu fileMenu = new JMenu("Меню");
for (int i = 0; i < fileItems.length; i++) {
JMenuItem item = new JMenuItem(fileItems[i]);
item.setActionCommand(fileItems[i].toLowerCase());
item.addActionListener(new NewMenuListener());
fileMenu.add(item);
}
fileMenu.insertSeparator(1);
menu.add(fileMenu);
}
private class NewMenuListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if ("exit".equals(command)) {
System.exit(0);
}
if ("new game".equals(command)) {
init();
repaintField();
}
}
}
private class ClickListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
JButton button = (JButton) e.getSource();
button.setVisible(false);
String name = button.getText();
change(Integer.parseInt(name));
}
}
public void change(int num) {
int i = 0, j = 0;
for (int k = 0; k < 4; k++) {
for (int l = 0; l < 4; l++) {
if (numbers[k][l] == num) {
i = k;
j = l;
}
}
}
if (i > 0) {
if (numbers[i - 1][j] == 0) {
numbers[i - 1][j] = num;
numbers[i][j] = 0;
}
}
if (i < 3) {
if (numbers[i + 1][j] == 0) {
numbers[i + 1][j] = num;
numbers[i][j] = 0;
}
}
if (j > 0) {
if (numbers[i][j - 1] == 0) {
numbers[i][j - 1] = num;
numbers[i][j] = 0;
}
}
if (j < 3) {
if (numbers[i][j + 1] == 0) {
numbers[i][j + 1] = num;
numbers[i][j] = 0;
}
}
repaintField();
if (checkWin()) {
JOptionPane.showMessageDialog(null, "Победа!", "Поздравляем!!!", 1);
init();
repaintField();
setVisible(false);
setVisible(true);
}
}
public static void main(String[] args) {
JFrame app = new Pyatnashki();
app.setVisible(true);
}
} |
|
|
|
 |
Lordi : 2 Новичок
|
Фев 17, 2012 13:19 |
|
|
| Или кто может скиньте код какой-нибудь игрушки по Java, очень нужно на конкурс |
|
|
|
 |
|
|
|