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

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

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

Author24 — интернет-сервис помощи студентам
Стал изучать 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.07.2013, 14:23
Ответы с готовыми решениями:

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

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

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

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

0
04.07.2013, 14:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.07.2013, 14:23
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru