Форум программистов, компьютерный форум, киберфорум
Программирование игр
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.75/1317: Рейтинг темы: голосов - 1317, средняя оценка - 4.75
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019

Несколько небольших игрушек

08.02.2010, 23:16. Показов 268105. Ответов 216
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я тут решил повылаживать некоторые примеры моего творчества на заре знакомства с Билдером. Некоторые я уже тут выкладывал, некоторые нет, но я решил выложить все в одном месте. Может быть кому-нибудь поможет, может быть кто-нибудь подчерпнет для себя что-то…
В общем, смотрите, берите если нужно.
52
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.02.2010, 23:16
Ответы с готовыми решениями:

Несколько небольших вопросов
1) отличаются ли чем-нибудь A и B и если ничем не отличаются, то когда "красивее" что использовать? public A; public B { get; ...

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

Несколько небольших вопросов
1. Если у меня есть поле типа enum с несколькими значениями, то как я могу получить через php массив значений этого поля? То есть если я...

216
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
17.12.2019, 16:05
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Понг
8Observer8, это просто позор господа...
Еще и исходник выложил ...
Как там 3D движок поживает ? рост то хоть есть ? Или мхом все поросло ?
хотя да вижу вижу, великие были помыслы до удаль молодецкая ушла ...

Начните создавать что то посерьезней, такие вещи как пакманы змейки пятнахи и прочее это поделки на вечер. Пакман к примеру был серьезным проектом в 80х только потому что под него сначала создали процессор для игрового автомата а потом на нем сделали код пакмана, писать такое в 21 веке на современных языках, ну я даже не знаю пойду поплачу над деградацией человечества...
Изображения
 
0
9989 / 2961 / 497
Регистрация: 05.10.2013
Сообщений: 8,131
Записей в блоге: 243
17.12.2019, 20:40
Этот Понг я переписал для тех кто будет изучать актуальный шейдерных OpenGL вместе с C#, изучая туториал: https://noobtuts.com/cpp/2d-pong-game По моей задумке любой начинающий в шейдерном OpenGL может читать данный туториал открыть мой код и изучить основы. В проём проекте происходит загрузка ширфтов, которые можно сгенерировать с помощью Bitmap Font Generator. Этот способ вывода текста можно использовать в 2D и 3D играх. На шейдерном OpenGL нет средств для вывода шрифтов. В данное теме выкладываются наработки. Здесь нужно выкладывать код, который может кому-то пригодится. Не нужно здесь флудить. За это накажут модераторы. Выдадут предупреждение или штраф. Каждый развивается и пытается помочь другим своими наработками, кто как может. Если у вас есть исходники, то выкладывайте. Не нужно здесь критиковать никого. Никто никому ничем не обязан. Напишите в личку, если хотите высказать критику (не надо!)
0
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
17.12.2019, 21:04
Прогресс это движение вверх... В большинстве своем что здесь выложено не поможет ничему и никому, эти поделки не стоят потраченного на них времени.
Вон в разделе GUI пользователь пытается спросить как сделать программную анимацию, я знаю ? да конечно но я не скажу, он не поймет так думает иначе, по учебнику.
О том как гонять на "долбилках" (таймеры, потоки) кубик тобишь ваш мячик большого ума не надо, дальше то что ? Вы потрудились создать ракету бота ? или по вашей змейке пройдемся, вы видели современные игры "Змейка", у меня вот вопрос почему вы сделали змейку где за шаг берется целая клетка ? Так делали в тех же 80х и не потому что это мода была, так были устроены языки программирования тогда когда за шаг брался один псевдо-символ 8х8 пикселей. Почему не сделать современней красивей, еще раз Вам задаю вопрос с чего вы взяли что ваш "мусор" игры созданные по понятиям 40 летней давности чему то могут научить ?

Еще и удивление, ну да конечно вы же на это время потратили да ? Как там говорил "Кирпич" -Если бросаю кость то не важно нравиться она или нет.
А все таки я жду ваш движек 3Д, с вашим статусом делать такой вот "Понг" стыдно....
0
9989 / 2961 / 497
Регистрация: 05.10.2013
Сообщений: 8,131
Записей в блоге: 243
17.12.2019, 22:30
Нужно сначала учиться писать маленькие игры, тренироваться на них, постепенно эти игры будут развиваться с теми кто их пишет. Добавлять постепенно: текст, изображения, звук, игру на двоих (то есть сокеты), 3D и т.д. Мы все живые луди. Мы не можем сразу взять и реализовать скелетную анимацию на шейдерном OpenGL. Нужно через труд к этом идти, через практику. Увидел, что где-то реализован вывод шрифта и туториал под рукою, можешь открыть и взять на вооружение, сделать частью себя, довести до автоматизма, переходить на следующий этап, его доводить до автоматизма и т.д. Многие учатся так программировать через игры. Потому что это весело делать разные маленькие игрушки. Я сейчас работаю над сетевыми крестиками ноликами. Мой сервер будет на бесплатном хостинге Heroku. Пишу на TypeScript, Node.js, Express, Hadlebars, socket.io. За одно веб программирование изучаю, то есть CSS и HTML. Сделаю возможность создавать комнаты для двух человек. Далее, эти наработки можно будет использовать для других браузерных сетевых игр. Для клиента можно будет взять либо WebGL, либо Phaser (фреймворк на WebGL, с возможностью программирования на TypeScript). Можно сделать Крестики-нолики в 3D на чистом WebGL/GLSL либо взять движок Babylon.js, который написан на TypeScript. Давайте не стыдить друг друга, а выкладывать свои достижения, чтобы мотивировать других. Здесь люди иногда не выкладывают исходники, а выкладывают видео или скриншоты. Я может тоже напишу Крестики-нолики и покажу результат, а исходники не буду выкладывать - может использую свои исходники для выполнения заказов. Если не хотите выкладывать исходники, то выложите скриншоты, какие игры вы сделали. По-моему, никаких правил нет, которые обязывают выкладывать исходники в этой теме. Многое же и не смотрят исходники. Я часто запускал игры из этой темы, если выкладывали EXE. Лучше выкладывать EXE (или исполняемые файлы для Linux и macOS). Мне очень интересно запускать и пробовать играть в чьи-то игрушки.
0
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
18.12.2019, 08:17
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Если не хотите выкладывать исходники, то выложите скриншоты, какие игры вы сделали.
В одной недалекой теме я персонально для Вас 30 минутное видео выкладывал своих игр, вы даже не смотрели, так что же вы тогда несете...

О уже крестики-нолики на подходе да еще и по сети, ваши игры не учат не чему, на ваших потугах не создать и жалкую аркаду.
я могу вас просто закидать первокласными туториалами и книгами с исходниками по 2D играм, там есть все от аркад до лабиринтов и анимации но есть одно НО, они на AS2-AS3 а это уже мертво... я это понимаю так как изучал а вы то нет как и остальные, а переписывать мне лень.

Ваши понги как и крестики-нолики всего лишь тешат ваше самолюбие в этом разделе пора это признать. А цена таким поделкам даже даром не нужно...
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
18.12.2019, 10:20
Nidl, складывается ощущение, что тебя кто-то заставляет читать данную тему, да ещё и денег просит за просмотр. Не нравится - не читай. Если лично для тебя в данной теме пользы нет, то это вовсе не означает, что пользы нет ни для кого. Если вся суть твоего появления в данной теме сводится к тому, чтобы высказать недовольство в адрес 8Observer8, то на форуме есть личка, пиши туда. Не надо утомлять других людей чтением своих опусов, которые кроме тебя вряд ли кому-то интересны
3
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
18.12.2019, 10:48
Evg,
Цитата Сообщение от Evg Посмотреть сообщение
складывается ощущение, что тебя кто-то заставляет читать данную тему
тема публична а значит как посетитель я прочел ее, а прочел от самого первого поста данную тему и будучи хорошим практикующим знатоком по созданию 2D игр, в частности аркад, высказал свое мнение о практичности данной темы.
Не думаю что тема станет чудесной если каждый день я буду закидывать ее "Понгами", "Крестиками-ноликами", "Галактикой", "Пакманами" которые пишутся от 1 до 2 часов каждая, и прочими поделками которые являются простыми и конечными и не несут ничего образовательного и не подразумевают никакого развития мышления для более сильных проектов, причем автор темы врятле задумывал данную тему что она вместо роста скатиться вниз, подобные разделы требуют очень хорошей модерации дабы не превращаться в свалку поделок "первоклашек".
Цитата Сообщение от Evg Посмотреть сообщение
Если лично для тебя в данной теме пользы нет, то это вовсе не означает, что пользы нет ни для кого
Вы уверены в этом ? что есть хоть кому то сейчас польза от этой темы? Когда 90% пишут на Unity и там все эти поделки образно говоря делаются в 15 кликов мыши следуя флажкам подсказкам.
Последний "Понг" с управлением для двух игроков это уже дно развития данной ветки.
Я все сказал.
0
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
19.12.2019, 12:53
Ну а ЧО

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
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
import java.awt.image.ConvolveOp;
import java.awt.image.Kernel;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
 
 
 
public class Ray
{
    public JLayeredPane swap;
    public boolean[] key = {false, false};
    public int[] size = {800, 600};
    public JLabel jl;
    public int shipX;
    public int s = 3;
    public JLabel[] st = new JLabel[18];
    public JLabel[] as = new JLabel[5];
    public int[] asteroidY = new int[as.length];
    public int[] ySt = new int[st.length];
    public JLabel bl; 
    public int bulletX;
    public int bulletY;
    public int r;
    public JTextArea score;
    public boolean flag = true;
    
    
    public Ray()
    {
        make_Window();
        make_Ship();
        make_Bullet();
        make_Star();
        make_Asteroid();
        make_Score();
        
        swap.requestFocus();
        new WorkerThread();
    }
    
    
    private void make_Window()
    {
        JPanel panel = new JPanel();
        panel.setPreferredSize(new Dimension(800, 600));
        panel.setOpaque(false);
        
        JFrame win = new JFrame("Ray");
        swap = new JLayeredPane();
        swap = win.getLayeredPane();
        win.add(panel);
        win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        win.setResizable(false);
        win.getContentPane().setBackground(Color.BLACK);
        win.pack();
        win.setLayout(null);
        win.setLocationRelativeTo(null);
        win.setVisible(true);
        
        swap.addKeyListener(new imputListener());
    }
    
    
    public class imputListener implements KeyListener
     { 
         public void keyPressed(KeyEvent e)
         {
             switch (e.getKeyCode()) 
             {
                case KeyEvent.VK_LEFT:
                    key[0] = true;
                break;
                case KeyEvent.VK_RIGHT:
                    key[1] = true;
                break;
                case KeyEvent.VK_UP:
                    if (!bl.isVisible())
                    {
                        bulletX = jl.getX() + jl.getWidth()/2 - bl.getWidth()/2;
                        bulletY = jl.getY() - bl.getHeight();
                        bl.setVisible(true);
                    }
                break;
             }
         }
         
         
         public void keyReleased(KeyEvent e)
         {
             switch (e.getKeyCode()) 
             {
                case KeyEvent.VK_LEFT:
                    key[0] = false;
                break;
                case KeyEvent.VK_RIGHT:
                    key[1] = false;
                break;
                case KeyEvent.VK_UP:
                    //...
                break;
             }
         }
         public void keyTyped(KeyEvent e){}
     }
    
    
    private void make_Ship()
    {
        int[] xPoint = {25,0,25,50};
        int[] yPoint = {0,75,100,75};
        int nPoint = 4;
        
        BufferedImage bf = new BufferedImage(50, 100, BufferedImage.TYPE_INT_ARGB);
        Graphics g = bf.createGraphics();
        ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g.setColor(new Color(125,90,255));
        g.fillPolygon(xPoint, yPoint, nPoint);
        g.drawImage(bf, 0, 0, null);
        g.dispose();
        
        jl = new JLabel();
        jl.setBounds(size[0]/2-50/2, size[1]-100, 50, 100);
        jl.setLayout(null);
        jl.setOpaque(false);
        jl.setIcon(new ImageIcon(bf));
        jl.setVisible(true);
        swap.add(jl, new Integer(1), 0);
 
        bf.flush();
        
        shipX = jl.getX();
    }
    
    
    private void make_Score()
    {
        score = new JTextArea();
        score.setBounds(700, 0, 50, 100);
        score.setOpaque(false);
        score.setFont(new Font("SansSerif",Font.BOLD, 25));
        score.setForeground(Color.WHITE);
        score.setText("0");
        score.setSelectionColor(new Color(153, 153, 0));
        score.setLayout(null);
        swap.add(score, new Integer(3), 0);
    }
    
    
    private void make_Asteroid()
    {
        int arr[] = {250, 500, 750, 1000, 1250};
        for (int i = 0; i < as.length; i++)
        {
            int[] xPoint = {
                    new Random().nextInt(29),
                    new Random().nextInt(29)+30,
                    new Random().nextInt(29)+60,
                    new Random().nextInt(29)+60,
                    new Random().nextInt(29)+60,
                    new Random().nextInt(29)+30,
                    new Random().nextInt(29),
                    new Random().nextInt(29)
                    };
            int[] yPoint = {
                    new Random().nextInt(29),
                    new Random().nextInt(29),
                    new Random().nextInt(29),
                    new Random().nextInt(29)+30,
                    new Random().nextInt(29)+60,
                    new Random().nextInt(29)+60,
                    new Random().nextInt(29)+60,
                    new Random().nextInt(29)+30
                    };
            int nPoint = 8;
            
            BufferedImage bf = new BufferedImage(90, 90, BufferedImage.TYPE_INT_ARGB);
            Graphics g = bf.createGraphics();
            ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            g.setColor(new Color(125,90,255));
            g.fillPolygon(xPoint, yPoint, nPoint);
            g.drawImage(bf, 0, 0, null);
            g.dispose();
            
            as[i] = new JLabel();
            as[i].setBounds(new Random().nextInt(600)+100, arr[i]*-1, 90, 90);
            as[i].setName(as[i].getY()*-1+"");
            as[i].setLayout(null);
            as[i].setOpaque(false);
            as[i].setIcon(new ImageIcon(bf));
            as[i].setVisible(true);
            swap.add(as[i], new Integer(2), 0);
 
            bf.flush();
            
            asteroidY[i] = as[i].getY();
        }
    }
    
    
    private void make_Bullet()
    {
        bl = new JLabel()
        {
            private static final long serialVersionUID = 1L;
 
            
            protected void paintComponent(Graphics g)
            {
                super.paintComponent(g);
                BufferedImage b00 = new BufferedImage(30, 30, BufferedImage.TYPE_INT_ARGB);
                BufferedImage b01 = new BufferedImage(30, 30, BufferedImage.TYPE_INT_ARGB);
                
                g = b00.createGraphics();
                int[] xPoint = {0,24,24,0};
                int[] yPoint = {0,0,24,24};
                int nPoint = 4;
                g.setColor(new Color(225,90,155));
                g.fillPolygon(xPoint, yPoint, nPoint);
                g.drawImage(b00, 0, 0, null);
                g.dispose();
                b00.flush();
                g = b01.createGraphics();
                Graphics2D g2 = (Graphics2D)g;
                g2.translate(3, 3);
                g2.rotate(Math.toRadians(r), this.getWidth()/2-3, this.getHeight()/2-3);
                g2.drawImage(b00, 0, 0, null);
                g2.dispose();
                this.setIcon(new ImageIcon(b01));
                b01.flush();
            }
        };
        bl.setBounds(-50, -50, 30, 30);
        bl.setLayout(null);
        bl.setOpaque(false);
        bl.setVisible(false);
        swap.add(bl, new Integer(1), 0);
 
    }
    
    
    private void make_Star()
    {
        int[] arrStarSize = {6, 12, 18, 24};
        int[][] color = {{153,51,255},{255,255,0},{255,102,102},{127,0,255}};
        
        for (int i = 0; i < st.length; i++)
        {
            int s = new Random().nextInt(arrStarSize.length);
            BufferedImage bf = new BufferedImage(arrStarSize[s], arrStarSize[s], BufferedImage.TYPE_INT_ARGB);
            Graphics g = bf.createGraphics();
            ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
            g.setColor(new Color(color[s][0],color[s][1],color[s][2]));
            ((Graphics2D) g).setStroke(new BasicStroke(2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL));
            g.drawLine(arrStarSize[s]/2, 2, arrStarSize[s]/2, arrStarSize[s]-2);
            g.drawImage(bf, 0, 0, null);
            g.dispose();
            bf.flush();
            
            float[] matrix = new float[9];
            for (int b = 0; b < matrix.length; b++)
                matrix[b] = 1.0f/(float)matrix.length;
            Kernel kernel = new Kernel(3, 3, matrix);
            BufferedImageOp op = new ConvolveOp(kernel);
            bf = op.filter(bf, null);
            
            ySt[i] = new Random().nextInt(600);
            st[i] = new JLabel();
            st[i].setBounds(new Random().nextInt(800),
                    ySt[i], arrStarSize[s], arrStarSize[s]);
            st[i].setName(arrStarSize[s]/3-1 + "");
            st[i].setLayout(null);
            st[i].setOpaque(false);
            st[i].setIcon(new ImageIcon(bf));
            st[i].setVisible(true);
            swap.add(st[i], new Integer(0), i);
        }
    }
    
    
    class WorkerThread extends Thread
    {
        int fps = 15;
 
        
        public WorkerThread()
        {
            setDaemon(true); 
            start();
        }
 
        public void run()
        {
            while (flag)
            {
                //ship
                if (key[0])
                {
                    if (jl.getX() > 0)
                    {
                        shipX -= s;
                    }
                }
                else
                if (key[1])
                {
                    if (jl.getX() < size[0] - jl.getWidth())
                    {
                        shipX += s;
                    }
                }
                jl.setLocation(shipX, jl.getY());
                //stars
                for (int i = 0; i < st.length; i++)
                {
                    if (ySt[i] < 600)
                    {
                        ySt[i] += Integer.parseInt(st[i].getName());
                        st[i].setLocation(st[i].getX(), ySt[i]);
                    }
                    else
                    {
                        ySt[i] = 0;
                        st[i].setLocation(ThreadLocalRandom.current().nextInt(800), ySt[i]);
                    }
                }
                //bullet
                if (bl.isVisible())
                {
                    if (bulletY > -50)
                    {
                        bulletY -= s*2;
                        r += 5;
                        if (r > 90) r = 0;
                    }
                    else
                    {
                        bl.setVisible(false);
                        score.setText(Integer.parseInt(score.getText()) - 10 + "");
                    }
                    bl.setLocation(bulletX, bulletY);
                }
                //asteroid
                for (int i = 0; i < as.length; i++)
                {
                    if (asteroidY[i] < 600)
                    {
                        asteroidY[i] += s;
                        as[i].setLocation(as[i].getX(), asteroidY[i]);
                    }
                    else
                    {
                        score.setText(Integer.parseInt(score.getText()) - 5 + "");
                        asteroidY[i] = (Integer.parseInt(as[i].getName()) + new Random().nextInt(500) + 900) * -1;
                        as[i].setLocation(ThreadLocalRandom.current().nextInt(600)+100, asteroidY[i]);
                    }
                }
                //hit
                for (int i = 0; i < as.length; i++)
                {
                    if (bl.getY() < as[i].getY() &&
                        bl.getX() < as[i].getX() + as[i].getWidth() &&
                        bl.getX() + bl.getWidth() > as[i].getX())
                    {
                        score.setText(Integer.parseInt(score.getText()) + 10 + "");
                        bl.setVisible(false);
                        bl.setLocation(-50, -50);
                        asteroidY[i] = (Integer.parseInt(as[i].getName()) + new Random().nextInt(500) + 900) * -1;
                        as[i].setLocation(ThreadLocalRandom.current().nextInt(600)+100, asteroidY[i]);
                    }
                }
                //:)
                if (score.getText().equals("1000"))
                {
                    flag = false;
                    score.setText("0");
                    bl.setVisible(false);
                    bl.setLocation(-50, -50);
                    for (int i = 0; i < as.length; i++)
                    {
                        asteroidY[i] = (Integer.parseInt(as[i].getName()) + new Random().nextInt(500) + 900) * -1;
                        as[i].setLocation(ThreadLocalRandom.current().nextInt(600)+100, asteroidY[i]);
                    }
                    
                    JOptionPane.showMessageDialog(null,
                            "Мир может спать спокойно," + '\n' + "если у нашей Галактики такие стражи",
                            "Победа",
                            JOptionPane.PLAIN_MESSAGE, null);
                    
                    flag = true;
                    for (int i = 0; i < key.length; i++)
                    {
                        key[i] = false;
                    }
                }
                else
                if (Integer.parseInt(score.getText()) <= -5)
                {
                    flag = false;
                    score.setText("0");
                    bl.setVisible(false);
                    bl.setLocation(-50, -50);
                    for (int i = 0; i < as.length; i++)
                    {
                        asteroidY[i] = (Integer.parseInt(as[i].getName()) + new Random().nextInt(500) + 900) * -1;
                        as[i].setLocation(ThreadLocalRandom.current().nextInt(600)+100, asteroidY[i]);
                    }
                    
                    JOptionPane.showMessageDialog(null,
                            "Вы – опозорили честь мундира!",
                            "Поражение",
                            JOptionPane.PLAIN_MESSAGE, null);
                    
                    flag = true;
                    for (int i = 0; i < key.length; i++)
                    {
                        key[i] = false;
                    }
                }
 
                try
                {
                    sleep(fps);
                }
                catch (InterruptedException e)
                {
                    //...
                }
            }
        }
    }
 
    
    public static void main(String[] args)
    {
        new Ray();
    }
}
Галактика в опасности, бла-бла-бла, вы последняя надежда, бла-бла-бал, вперед рыбешка к бою
Миниатюры
Несколько небольших игрушек  
0
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
19.12.2019, 12:58
ох оказия то какая, надо вместо

Java
1
if (score.getText().equals("1000"))
поставить это
Java
1
if (Integer.parseInt(score.getText()) >= 1000)
0
19.12.2019, 18:03

Не по теме:

Nidl, архитектура монолитная, не расширяемая (где паттрены проектирования?).
Отрисовка не способная отобразить даже тысячи картинок в реалтайме (где Vulkan API?)
Однопоточное ПО в 2020 году?
Фууу... :)
У 8Observer8, хотя бы более продвинутая отрисовка ;)

0
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
19.12.2019, 19:56
snake32,
Цитата Сообщение от snake32 Посмотреть сообщение
архитектура монолитная, не расширяемая
Ну развить не проблема , это у меня стиль такой, я пишу одним полотном не люблю дробить код если он не больше 10000 строчек, а вот в том что код монолит здесь вы не правы, для меня он еще как модульный. Возьмем этот код немного припудрим и вуаля
Миниатюры
Несколько небольших игрушек   Несколько небольших игрушек   Несколько небольших игрушек  

0
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
19.12.2019, 20:06
Цитата Сообщение от snake32 Посмотреть сообщение
Отрисовка не способная отобразить даже тысячи картинок в реалтайме
java увы не может вытянуть и 200 картинок в реалтайме, оптимально пара десятков даже виртуальная машина захлебыватся начинает, но если с умом то для 90% аркад этого хватает. Главное не лепить все и сразу а отрисовываать в зоне видимости пользователя.
многопоточность в java тоже не панацея опытным путем я вышел что максимум 5-6 потоков оптимально, дальше опять же виртуальная java машина закипает.
0
0 / 0 / 0
Регистрация: 22.07.2020
Сообщений: 3
22.07.2020, 15:30
Otaka, не могли ли вы объяснить ваш код в игре "Пятнашки". Так как я новичок в этой сфере и много чего не знаю, мне было бы интересно узнать побольше об этом. За ранее спасибо!
0
0 / 0 / 0
Регистрация: 09.08.2020
Сообщений: 1
09.08.2020, 01:58
https://yadi.sk/d/i0eBSSGmVNBJQA

тир
Миниатюры
Несколько небольших игрушек  
0
0 / 0 / 0
Регистрация: 28.08.2022
Сообщений: 1
28.08.2022, 18:20
Обозревателям игр:
Наконец-то! За 6 дней я сделал первую консольную игру на C++, которую, пожалуй, назову "ОБВАЛ".
Смысл в чём: (Идея не ORIGINAL)
На точку, находящуюся внизу комнаты под управлением игроком, падают ступеньки блоков в которых есть дыры. Эти дыры нужно заделать другими блоками, которые управляют, чтобы при заполнении ступенька удалилась, освобождая место под блоками.

Есть небольшой баг с заполнением, есть недочёт, много костылей, но для v1,0 думаю добротно получилось.

Запуск в формате: EXE
Права админа: не нужны.
Кликните здесь для просмотра всего текста
https://www.cyberforum.ru/attachment.php?attachmentid=1364868&stc= 1&d=1661699869


https://www.cyberforum.ru/atta... 1661700026
Миниатюры
Несколько небольших игрушек  
Вложения
Тип файла: zip обвал.zip (7.7 Кб, 13 просмотров)
0
 Аватар для Mikle Quits
1022 / 312 / 17
Регистрация: 21.01.2023
Сообщений: 548
19.03.2023, 09:41
Я так понял, тут публикуются только небольшие игрушки?
Тогда вот:

Бильярд 32к

Игра в жанре демосцены, написана на VB6, исходник прилагается, так же в комплекте есть EXE для тех, у кого нет VB6.
Все ресурсы (геометрия, текстуры, звуки) генерируются.
После компиляции для достижения размера 32к EXE сжат с помощью утилиты upx.exe, есть и незапакованный вариант на случай того, что антивируснику не понравится самораспаковка.
Можно играть вдвоём или против ИИ, можно просто наблюдать за битвой двух ИИ.
Вложения
Тип файла: zip Pool32kSrcExe.zip (89.4 Кб, 12 просмотров)
2
 Аватар для Mikle Quits
1022 / 312 / 17
Регистрация: 21.01.2023
Сообщений: 548
30.03.2023, 10:20
Что-то тихо тут, попробую ещё расшевелить.
Прогулка Карапета


Спросите, почему "Карапета"? А вы на нос посмотрите . Со всем уважением к армянскому народу.

Это фанатская поделка под впечатлением от старой игры Preliminary Monty 16k, которую я играл когда-то на Atari. Но это не полный клон, ни по геймплею, ни по левелдизайну.
В этой игре я впервые сделал поддержку геймпадов, уж не знаю, все ли модели будут работать.
Экран игры имеет размер 128*200 с широким пикселем, подобные режимы были на Atari, но, в отличие от Atari, здесь не 4, а 16 цветов. Изображение формируется софтрендером, но финальный вывод на экран производится с помощью DirectX с регулируемым масштабированием и отключаемым эффектом ТВ развёртки.

Все звуки воспроизведены на эмуляторе Atari, для чего мне пришлось вспоминать Atari Basic, и записаны в WAV.
Игра может показаться чересчур хардкорной, но Preliminary Monty 16k была значительно сложнее.
Тем не менее я понимаю, что "времена не те" и т. п.

В игре четыре эпизода, один из них секретный. Прогресс пройденных эпизодов сохраняется. С помощью "Restart" его можно обнулить.

В архиве игра с исходником и редактором карты.
Миниатюры
Несколько небольших игрушек  
Вложения
Тип файла: zip Karapet's Walk Src.zip (665.3 Кб, 21 просмотров)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.03.2023, 10:20

Несколько игрушек не устанавливаются
при установке игры через установщик windows , при распаковке вылетает- исходный файл повреждён. подскажите как с этим справиться.

Создать структуру данных. Найти количество названий игрушек, у которых цена меньше общей средней цены всех игрушек
помогите... Создать структуру с данными в которой должно происходить следующее: Добавить и вычислить в структуре поле «Цена со...

6 небольших программок
Есть человек который может объяснить/просто написать как составить 6 небольших программок?Пример:Вычислите наибольшее из X, S, Z и A

Есть 2 небольших вопроса...
Ребят,помогите пожалуйста. Вообщем есть 2 вопроса 1)Можно ли сделать так чтоб линки на документы были видны в представлениях? 2)Можно...

Верстка небольших блочков
Помогите, как можно реализовать такую штуку, я примерно понимаю как, но на абсолютном позиционирование не получается, блок закрывается...


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

Или воспользуйтесь поиском по форуму:
217
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть не большие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru