Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
9 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 28

Интересная головоломка

04.07.2013, 14:23. Показов 523. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Стал изучать lwjgl(движок ява для создания игр) и столкнулся с проблемой снижения fps(частота обновления экрана) из-за небольшой как мне казалось нагрузки приложения, я создал плоскость состоящую из 50-60 кубов что снизило fps со 100 до 20, и прыжки и передвижение в этой плоскости сталb заметно замедленнымb... Подумал, подумал и решил, что программа перегружается по следующей схеме: класс в котором описывается создание куба(6 плоскостей и загрузка текстур) состоит из 180 строк
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
import java.util.Random; 
 
 import org.lwjgl.opengl.GL11; 
 
 public class Quad { 
 
     float x1, y1, z1, x2, y2, z2, centerX, centerY, centerZ; 
     float width, height, length; 
     float yTop2; 
     float yTop, yBottom; 
     int num; 
     float cX2, cY2, cZ2; 
     float texSize; 
     boolean top, bottom, front, back, left_side, right_side; 
 
     Random r = new Random(); 
 
     public Quad(float startX, float startY, float startZ, float endX, 
       float endY, float endZ, int number, float gh, float hj, float yu, 
       float jop, boolean oko, boolean gyo, boolean dfu, boolean qrt, 
       boolean bnjf, boolean ghiop) { 
      x1 = startX; 
      y1 = startY; 
      z1 = startZ; 
      x2 = endX; 
      y2 = endY; 
      z2 = endZ; 
      width = x2 - x1; 
      height = y2 - y1; 
      length = z2 - z1; 
      centerX = x1 + (width / 2); 
      centerY = y2 + (height / 2); 
      centerZ = z1 + (length / 2); 
      yTop = Math.abs(y2 - y1); 
      yBottom = y1 + yTop - height; 
      num = number; 
      cX2 = gh; 
      cY2 = hj; 
      cZ2 = yu; 
      texSize = jop; 
      top = oko; 
      bottom = gyo; 
      front = dfu; 
      back = qrt; 
      left_side = bnjf; 
      right_side = ghiop; 
     } 
 
     public Quad() { 
 
     } 
 
     public void texNum() { 
      if (num >= 1) { 
       TexLoad.wood.bind(); 
      } 
      if (num == 2) { 
       TexLoad.box.bind(); 
      }
     } 
 
     public void render() { 
      GL11.glColor3f(cX2, cY2, cZ2); 
     
      if (top) {
          texNum(); 
       GL11.glPushMatrix(); 
       GL11.glBegin(GL11.GL_QUADS); 
       GL11.glTexCoord2f(0, 0); 
       GL11.glNormal3f(x1, y1, z1);
       GL11.glVertex3f(x1, y1, z1); 
       GL11.glTexCoord2f(texSize, 0); 
       GL11.glNormal3f(x1 + width, y1, z1); 
       GL11.glVertex3f(x1 + width, y1, z1); 
       GL11.glTexCoord2f(texSize, texSize); 
       GL11.glNormal3f(x1 + width, y1, z1 + length); 
       GL11.glVertex3f(x1 + width, y1, z1 + length); 
       GL11.glTexCoord2f(0, texSize); 
       GL11.glNormal3f(x1, y1, z1 + length); 
       GL11.glVertex3f(x1, y1, z1 + length); 
       GL11.glEnd(); 
       GL11.glPopMatrix(); 
      } 
      // GL11.glColor3f(0.2f, 0.2f, 0.2f); 
      if (bottom) { 
       GL11.glPushMatrix(); 
       GL11.glBegin(GL11.GL_QUADS); 
       GL11.glTexCoord2f(0, 0); 
       GL11.glNormal3f(x1, y1 + height, z1); 
       GL11.glVertex3f(x1, y1 + height, z1); 
       GL11.glTexCoord2f(texSize, 0); 
       GL11.glNormal3f(x1 + width, y1 + height, z1); 
       GL11.glVertex3f(x1 + width, y1 + height, z1); 
       GL11.glTexCoord2f(texSize, texSize); 
       GL11.glNormal3f(x1 + width, y1 + height, z1 + length); 
       GL11.glVertex3f(x1 + width, y1 + height, z1 + length); 
       GL11.glTexCoord2f(0, texSize); 
       GL11.glNormal3f(x1, y1 + height, z1 + length); 
       GL11.glVertex3f(x1, y1 + height, z1 + length); 
       GL11.glEnd(); 
       GL11.glPopMatrix(); 
      } 
      // GL11.glColor3f(0.4f, 0.4f, 0.4f); 
      if (front) { 
       GL11.glPushMatrix(); 
       GL11.glBegin(GL11.GL_QUADS); 
       GL11.glTexCoord2f(0, 0); 
       GL11.glNormal3f(x1, y1, z1); 
       GL11.glVertex3f(x1, y1, z1); 
       GL11.glTexCoord2f(texSize, 0); 
       GL11.glNormal3f(x1 + width, y1, z1); 
       GL11.glVertex3f(x1 + width, y1, z1); 
       GL11.glTexCoord2f(texSize, texSize); 
       GL11.glNormal3f(x1 + width, y1 + height, z1); 
       GL11.glVertex3f(x1 + width, y1 + height, z1); 
       GL11.glTexCoord2f(0, texSize); 
       GL11.glNormal3f(x1, y1 + height, z1); 
       GL11.glVertex3f(x1, y1 + height, z1); 
       GL11.glEnd(); 
       GL11.glPopMatrix(); 
      } 
      // GL11.glColor3f(0.4f, 0.4f, 0.4f); 
      if (back) { 
       GL11.glPushMatrix(); 
       GL11.glBegin(GL11.GL_QUADS); 
       GL11.glTexCoord2f(0, 0); 
       GL11.glNormal3f(x1, y1, z1 + length); 
       GL11.glVertex3f(x1, y1, z1 + length); 
       GL11.glTexCoord2f(texSize, 0); 
       GL11.glNormal3f(x1 + width, y1, z1 + length); 
       GL11.glVertex3f(x1 + width, y1, z1 + length); 
       GL11.glTexCoord2f(texSize, texSize); 
       GL11.glNormal3f(x1 + width, y1 + height, z1 + length); 
       GL11.glVertex3f(x1 + width, y1 + height, z1 + length); 
       GL11.glTexCoord2f(0, texSize); 
       GL11.glNormal3f(x1, y1 + height, z1 + length); 
       GL11.glVertex3f(x1, y1 + height, z1 + length); 
       GL11.glEnd(); 
       GL11.glPopMatrix(); 
      } 
      // GL11.glColor3f(1.0f, 1.0f, 1.0f); 
      if (left_side) { 
       GL11.glPushMatrix(); 
       GL11.glBegin(GL11.GL_QUADS); 
       GL11.glTexCoord2f(0, 0); 
       GL11.glNormal3f(x1, y1, z1); 
       GL11.glVertex3f(x1, y1, z1); 
       GL11.glTexCoord2f(texSize, 0); 
       GL11.glNormal3f(x1, y1, z1 + length); 
       GL11.glVertex3f(x1, y1, z1 + length); 
       GL11.glTexCoord2f(texSize, texSize); 
       GL11.glNormal3f(x1, y1 + height, z1 + length); 
       GL11.glVertex3f(x1, y1 + height, z1 + length); 
       GL11.glTexCoord2f(0, texSize); 
       GL11.glNormal3f(x1, y1 + height, z1); 
       GL11.glVertex3f(x1, y1 + height, z1); 
       GL11.glEnd(); 
       GL11.glPopMatrix(); 
      } 
      // GL11.glColor3f(1.0f, 1.0f, 1.0f); 
      if (right_side) { 
       GL11.glPushMatrix(); 
       GL11.glBegin(GL11.GL_QUADS); 
       GL11.glTexCoord2f(0, 0); 
       GL11.glNormal3f(x1 + width, y1, z1); 
       GL11.glVertex3f(x1 + width, y1, z1); 
       GL11.glTexCoord2f(texSize, 0); 
       GL11.glNormal3f(x1 + width, y1, z1 + length); 
       GL11.glVertex3f(x1 + width, y1, z1 + length); 
       GL11.glTexCoord2f(texSize, texSize); 
       GL11.glNormal3f(x1 + width, y1 + height, z1 + length); 
       GL11.glVertex3f(x1 + width, y1 + height, z1 + length); 
       GL11.glTexCoord2f(0, texSize); 
       GL11.glNormal3f(x1 + width, y1 + height, z1); 
       GL11.glVertex3f(x1 + width, y1 + height, z1); 
       GL11.glEnd(); 
       GL11.glPopMatrix(); 
      } 
      // создание цвета по умолчанию 
      GL11.glColor3f(1.0f, 1.0f, 10.0f); 
     } 
 }
, чтобы создать в пространстве куб нужно в массив Arraylist<quad> quad добавить новый элемент quad с характеристиками расположения в пространстве (x y z) и прочей лабудой в скобках в массив quad
Java
1
2
3
List<Quad> quad = new ArrayList<Quad>();
quad.add(new Quad(d, e + a2, f, d + a1, e + 2 * a2, f - a3, 1, 1, 1, 1, 1, true, true, 
       true, true, true, true));
... и что мы получаем уважаемый программист?? компьютер вынуждается нами 100 раз в секунду перечитывать класс Quad каждого элемента quad[i], и сбрасывает скорость до 20, а что будет с компьютером если на прийдется строить по такому алгоритмы мир? вот именно ничего.. поэтому я решил обратиться к вам коллега, для наглядности ( так как не многие программисты и сисадмины обременяют себя изучением графических движков) покажу на пальцах какую головоломку мне надо решить... допустим мы имеем простейшую программу для занесения людей (работников) в базу данных...
если лень разбирать мой быдлокод листайте ниже
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
import java.util.*;
public class No0012_Employee_test {
    public static void main(String[] args) {
        //zapolnenije massiva staff tremia objektami
        Employee6[] staff = new Employee6[3];
        staff[0] = new Employee6("Carl Cracker", 75000,
                1987, 12, 15);
        staff[1] = new Employee6("Harry Hacker", 50000,
                1989, 10, 1);
        staff[2] = new Employee6("Tony Tester", 40000,
                1990, 3, 15);
        //uvelichenije zarplati na 5%
        for (Employee6 e : staff)
            e.raiseSalary(5);
        //vivod informacii o vsech objektach Employee
        for (Employee6 e : staff)
            System.out.println("name=" + e.getName()
                    + ",salary" + e.getSalary()
                    + ",hireDay=" + e.getHireDay());
    }
}
class Employee6
{
    public Employee6(String n, double s,
            int year, int month, int day)
    {
        name = n;
        salary = s;
        GregorianCalendar calendar = new
                GregorianCalendar(year, month - 1, day);
        //v klasse GregorianCalendar janvaru sootvetstvujet 0.
        hireDay = calendar.getTime();
    }
    public String getName()
    {
        return name;
    }
    public double getSalary()
    {
        return salary;
    }
    public Date getHireDay()
    {
        return hireDay;
    }
    public void raiseSalary(double byPercent)
    {
        double raise = salary * byPercent / 100;
        salary += raise;
    }
    private String name;
    private double salary;
    private Date hireDay;
}
здесь мы создаем класс Работник в котором описываем имя, зарплату, дату найма сотрудника, и пару методов для увеличения зарплаты сотрудника и получения вышеуказанных данных, далее в классе main мы создаем массив(ничего не напоминает) в который заносим новый объект - нового сотрудника, итак , есть ли какой нибудь способ, что бы можно было бы переиспользовать объект класса Работник, тоесть внести в массив не одного сотрудника а несольких, чтобы программа читала класс Работник не один 3 раза а 1, если вы напрягете свои нейрончики и поможете мне я буду на седьмом небе, вам то конечно с этого ничего кроме морального удовлетворения если вы из таких... но тем не менее всем спасибо, обновляю страницу каждые 50-60 минут
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.07.2013, 14:23
Ответы с готовыми решениями:

Интересная программа из С на Java
Собственно,долго мучался, но все таки получилось выполнить данное задание на С, но как на зло, срочно потребовалось реализовать эту...

Интересная информация, почитайте.
http://ricn.ru/humour/material/4966/

Интересная головоломка
1.С помощью текстового редактора создать файл который содержит текст.Длина ряда с текстом не должна превышать 80 символов.Это входной файл....

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.07.2013, 14:23
Помогаю со студенческими работами здесь

интересная головоломка
Стал изучать lwjgl(движок ява для создания игр) и столкнулся с проблемой снижения fps(частота обновления экрана) из-за небольшой как мне...

интересная головоломка
помоготе решить задачу про спички я уже неделю голову ломаю....Даны n-спичек и 2 игрока,каждый может вытянуть от 1 до 3 спичек...выигрывает...

Очень интересная головоломка..
Дан массив целых чисел (n=10); Переставить элементы след образом a,a,a,a,a,a..... Целый день думаю, ничего на ум не...

Головоломка
Головоломка квадраты и цифры. Задача такая: дано поле 10 на 10 клеток, в некоторых из них стоят цифры, каждая цифра это начало нового...

Головоломка
Прошу помощи. Необходимо исходя из имени выбранного класса, отобразить другой блок. К примеру если произошёл клик на .diag показать блок с...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 16.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 15.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru