0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 28

Пятнашки

17.12.2010, 20:00. Показов 11231. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Помогите пожалуйста с игрой или наведите на определенные мысли. Для зачета по программированию мне нужно написать игру, я выбрала игру "Пятнашки". У меня к сожалению есть только интерфейс...нужно ее как то доделать...с Java не то чтобы не дружу, но и не на "Ты" я с ней. Пусть она будет не совсем рабочей, но нечто большее, что у меня сейчас имеется. Может кто что посоветует. Заранее спасибо.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 
public class Tag extends Frame {
    Panel panel = new Panel();
    Button button1 = new Button("1");
    Button button2 = new Button("2");
    Button button3 = new Button("3");
    Button button4 = new Button("4");
    Button button5 = new Button("5");
    Button button6 = new Button("6");
    Button button7 = new Button("7");
    Button button8 = new Button("8");
    Button button9 = new Button("9");
    Button button10 = new Button("10");
    Button button11 = new Button("11");
    Button button12 = new Button("12");
    Button button13 = new Button("13");
    Button button14 = new Button("14");
    Button button15 = new Button("15");
    Button button16 = new Button("16");
    Button button17 = new Button("start");
 
    public Tag () {
        add(panel, BorderLayout.CENTER);
        panel.setLayout(new GridLayout(4, 4, 0, 0));
        panel.add(button1);
        panel.add(button2);
        panel.add(button3);
        panel.add(button4);
        panel.add(button5);
        panel.add(button6);
        panel.add(button7);
        panel.add(button8);
        panel.add(button9);
        panel.add(button10);
        panel.add(button11);
        panel.add(button12);
        panel.add(button13);
        panel.add(button14);
        panel.add(button15);
        
 
        addWindowListener(new WindowAdapter() {
 
            public void windowClosing(WindowEvent arg0) {
                System.exit(0);
            }
        });
 
        setSize(600, 600);
        setVisible(true);
        setResizable(false);
        setLocation(100, 100);
        setTitle("Пятнашки");
    }
 
    public static void main(String[] args) {
        new Tag();
    }
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.12.2010, 20:00
Ответы с готовыми решениями:

Пятнашки
Здраствуйте, я хочу написать игру пятнашки на java с использиванием коллекций и графики fx, так вот нету случайно ни у кого ...

Пятнашки
Для зачета в институте преподаватель дал задание реализовать пятнашки на java. Кое что работает, но не корректно вот код: import...

Игра Пятнашки
Здравствуйте.В общем вот код программы,не мой,взял с нета. Как нужно сделать чтобы на пустом месте так же выводилось число(по умолчанию...

3
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
17.12.2010, 20:49
когда я начинал заниматься явой, то натолкнулся на сайт, какого-то умельца который опять же в начале своего пути написал потобную игру, она не лишена недостатков и к сожалению сайт я забыл, но код есть. может поможет
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
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() {
        super("Pyatnashki by c0nst");
        setBounds(200, 200, 300, 300);
        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]));
                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);
    }
}
2
0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 28
18.12.2010, 11:54  [ТС]
TanT, Огромное спасибо...буду разбираться)
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 15
10.07.2014, 17:05
Моя реализация

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
package game;
 
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.Random;  
 
public class VoronCalc extends JFrame implements MouseMotionListener, MouseListener
{
   static int win_width, win_height;
   
   pct[] pt;
   pct t_swap;
   int loc[];
   int n=16;
   int edge = n/4;
   int it_size = 35;
   int x_min = 10, x_max = 115, y_min = 31, y_max = 136;
   
   public void SwapA(int a[], int i, int j){
       int t = a[i]; a[i] = a [j]; a[j] = t;
   }
   
   public void swap_obj(pct a[], int i, int j){
       t_swap = a[i]; a[i] = a[j]; a[j] = t_swap;
       move_order();
   }
      
   public VoronCalc() 
   {
     super("15");
     win_width = 165; 
     win_height = 185;
     
     this.addMouseMotionListener(this);
     this.addMouseListener(this);
     
     loc = new int[n];
     for (int i=0; i<n; i++) 
         loc[i]=i;
        
     Random rand = new Random();
     for (int i=0; i<n; i++) 
         SwapA(loc, i, Math.abs(rand.nextInt() % n));
         
     pt = new pct[n];
     for (int i=0; i<n; i++) 
         pt[i] = new pct(loc[i]);
     
     move_order();
   }
   
   public void move_order()
   {
       pt[0].move(10, 31);
       pt[1].move(45, 31);
       pt[2].move(80, 31);
       pt[3].move(115, 31);
        
       pt[4].move(10, 66);
       pt[5].move(45, 66);
       pt[6].move(80, 66);
       pt[7].move(115, 66);
        
       pt[8].move(10, 101);
       pt[9].move(45, 101);
       pt[10].move(80, 101);
       pt[11].move(115, 101);
        
       pt[12].move(10, 136);
       pt[13].move(45, 136);
       pt[14].move(80, 136);
       pt[15].move(115, 136);
   }
   
   public void paint(Graphics g)
   {
       g.clearRect(0, 0, win_width, win_height);
       for (int i=0; i<n; i++) 
               pt[i].draw_pct(g);  
   }
   
   public void mouseReleased(MouseEvent e)
   {
       int vec_x = 0, vec_y = 0;
       
       for (int i=0; i<n; i++)
       {
           if (pt[i].bBeginDrag)
           {
               vec_x = e.getX() - pt[i].x1;
               vec_y = e.getY() - pt[i].y1;
               
               if (Math.abs(vec_x) > Math.abs(vec_y))
               {
                   if ( (pt[i].imX < x_max) && ((vec_x > 0)&&(pt[i+1].label==0)) )
                       swap_obj(pt, i, i+1);
                   
                   if ( (pt[i].imX > x_min) && ((vec_x < 0)&&(pt[i-1].label==0)) )
                       swap_obj(pt, i, i-1);
               }
               
               else if (Math.abs(vec_y) > Math.abs(vec_x))
               {
                   if ( (pt[i].imY < y_max) && ((vec_y > 0)&&(pt[i+edge].label==0)) ) 
                       swap_obj(pt, i, i+edge);
                   
                   if ( (pt[i].imY > y_min) && ((vec_y < 0)&&(pt[i-edge].label==0)) ) 
                       swap_obj(pt, i, i-edge);
               }
               
               pt[i].bBeginDrag = false;
               repaint();
           }         
       }
   }
   
   public void mousePressed(MouseEvent e)
   {
       for (int i=0; i<n; i++)
           pt[i].is_dragged(e.getX(), e.getY());
   }
   
   public void mouseDragged(MouseEvent e) {}
   public void mouseMoved(MouseEvent e) {}
   public void mouseClicked(MouseEvent e) {}
   public void mouseEntered(MouseEvent e) {}
   public void mouseExited(MouseEvent e) {}
   
   
   public static void main(String[] args) 
   {
     VoronCalc app = new VoronCalc();
     app.setVisible(true);
     app.setSize(win_width, win_height);  
   }
   
   public class pct extends JFrame
   {
       Rectangle rcImage;
       boolean bBeginDrag = false;
       
       int imX = 0;
       int imY = 0; 
       int label;
       int x1, y1;
       
       public pct(int cname) 
       {
           label = cname; 
           rcImage = new Rectangle(imX, imY, it_size, it_size);
       }
       
       public void is_dragged(int X, int Y)
       {
           bBeginDrag = rcImage.contains(X, Y);
           if(bBeginDrag)
           {
               x1 = X; y1 = Y;
           } 
       }
       
       public void draw_pct(Graphics g)
       { 
           if (label !=0){
               rcImage = new Rectangle(imX, imY, it_size, it_size);
               g.drawString(String.valueOf(label), imX + (it_size/2), imY + (it_size/2));
               g.drawRoundRect(imX, imY, it_size, it_size, 10, 10);
           }
       }
       
       public void move(int X, int Y)
       { 
           imX = X; imY = Y;
       }
   }
 }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.07.2014, 17:05
Помогаю со студенческими работами здесь

Игра пятнашки
Нашел в интернете код игры пятнышки стало интересно как сделать что бы пользователь сам вводил поле допустим 4х3 и т.д и сделать так же...

Давайте разберём , как эти пятнашки работают?
Давайте разберём , как эти пятнашки работают? http://www.brian-borowski.com/software/puzzle/

Игра "Пятнашки"
Здравствуйте! Есть код реализации игры &quot;Пятнашки&quot;, только весь код в одном классе с разными методами. Код должен быть основан на ООП....

Пятнашки на C#
Привет может глупый вопрос, но я хочу написать пятнашки на C#, но не могу понять как их сделать, мой примерный алгоритм: 1) На форме...

Пятнашки
# include &lt;iostream&gt; using namespace std; //# include &lt;russian.h&gt; # include &lt;stdlib.h&gt; # include &lt;conio.h&gt; # include &lt;time.h&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru