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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2011, 17:46   #1
STERVA
 
Регистрация: 04.03.2010
Сообщений: 4
Печаль игра на Java

Всем добрый вечер. У меня код игры "пятнашки", с цифрами, вместо них нуже картинки. Можете показать как вместо цифр сделать картинку, чтоб она разбивалась на части.

вот код:

package info.javenue.games.pyatnashki;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Pyatnashki extends JFrame {
private JPanel panel = new JPanel(new GridLayout(4, 4, 2, 2));
private JMenuBar menu = null;
private final String fileItems[] = new String []{"New", "Exit"};
private static Random generator = new Random();
private int[][] numbers = new int[4][4];

public Pyatnashki() {

setBounds(200, 200, 300, 300);
setResizable(false);
createMenu();
setJMenuBar(menu);
setDefaultCloseOperation(JFrame.EXI T_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]));
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("File");

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".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, "YOU WIN!", "Congratulations", 1);
init();
repaintField();
setVisible(false);
setVisible(true);
}
}

public static void main(String[] args) {
JFrame app = new Pyatnashki();
app.setVisible(true);
}
}
STERVA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра нарды на Java turtles Помощь студентам 7 26.04.2015 12:23
имитационная игра на Java/HTML vol357 Фриланс 0 30.01.2011 19:08
[Java] Игра PingPong DRagono Помощь студентам 0 14.11.2010 04:28