С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/58: Рейтинг темы: голосов - 58, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 28
1

Пятнашки

17.12.2010, 20:00. Показов 11172. Ответов 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 с использиванием коллекций и графики ...

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

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

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

3
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
17.12.2010, 20:49 2
когда я начинал заниматься явой, то натолкнулся на сайт, какого-то умельца который опять же в начале своего пути написал потобную игру, она не лишена недостатков и к сожалению сайт я забыл, но код есть. может поможет
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  [ТС] 3
TanT, Огромное спасибо...буду разбираться)
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 15
10.07.2014, 17:05 4
Моя реализация

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
10.07.2014, 17:05
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.07.2014, 17:05
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru