Вверх ↑
Этот топик читают: Гость
Выберите свой возраст
1)
(3/26)
2)
(1/26)
3)
(22/26)

Ответов: 466
#1: 2025-01-27 18:29:12 ЛС | профиль | цитата
Codding 1.5.2


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


Перейду сразу к сути, без установки рабочей среды

Урок первый. Работа с GUI + инициализация
В этом уроке рассмотрим примитивный вывод никнейма, даты, времени и пинга в GUI

1. Создаем пакет и в нем первый класс вашего будущего проекта

package net.minecraft.fth;



public class Future {



}


2. Чтобы ваш класс "работал", инициализируем его в основном классе Minecraft


package net.minecraft.fth;



public class Future {



public static Minecraft mc; //объявляем статический класс переменной mc, который хранит в себе класс Minecraft. "Позволяет взаимодействовать с ним"



public Future() {

	    mc = Minecraft.getMinecraft(); // Инициализация mc

	}

}


3. Открываем основной класс игры Minecraft и добавляем следующее


public abstract class Minecraft implements Runnable, IPlayerUsage

{

	/** FTH */

	public Future fth;



//Остальная часть кода



public Minecraft(Canvas par1Canvas, MinecraftApplet par2MinecraftApplet, int par3, int par4, boolean par5)

//код

this.fth = new Future();

//код


Таким образом, наш новый класс Future теперь может взаимодействовать с нашей игрой.

4. Добавление переменных.

package net.minecraft.fth;



public class Future {



    public static Minecraft mc; // Объявляем статическую переменную mc, которая хранит в себе класс Minecraft. "Позволяет взаимодействовать с ним"



    public int ping = 0; // Переменная для хранения значения пинга



    private String pingTimeStr = "ping: 0 ms"; // Строка для отображения пинга



    private static String dateTime = ""; // Строка для хранения текущей даты и времени



    public static String timingInfo = ""; // Статическая строка для хранения информации о времени



    public Future() {

        mc = Minecraft.getMinecraft(); // Инициализация mc

    }

}


5. Методы для обновления переменных

Теперь давайте добавим методы для обновления значений пинга и даты/времени. Эти методы будут вызываться в нужные моменты, например, при обновлении состояния игры.


public void updatePing(int newPing) {

    this.ping = newPing; // Обновляем значение пинга

    this.pingTimeStr = "ping: " + newPing + " ms"; // Обновляем строку для отображения пинга

}



public void updateDateTime() {

    SimpleDateFormat sd = new SimpleDateFormat("dd.MM.yyyy HH:mm");

    dateTime = sd.format(new Date()); // Обновляем строку с текущей датой и временем

}


6. Создание метода отрисовки информации в GUI

public void renderGUI(GuiIngame gui, int width, int height) { 

GL11.glPushMatrix(); // Начало трансформации для масштабирования 

GL11.glScalef(0.5F, 0.5F, 1.0F); // Масштабирование



// Начальные координаты для отрисовки

int startX = 44;

int startY = 13;



// Получение имени игрока

String playerName = mc.thePlayer.username;

mc.fontRenderer.drawStringWithShadow(playerName, startX + 20, startY - 10, 16777215); // Вывод никнейма



// Отображение времени пинга

mc.fontRenderer.drawStringWithShadow(this.pingTimeStr, 2 * width - 120, 2, 16777215); // Вывод пинга



// Обновление и отображение текущей даты и времени

SimpleDateFormat sd = new SimpleDateFormat("dd.MM.yyyy HH:mm");

String currentDateTime = sd.format(new Date()); // Получение текущей даты и времени

mc.fontRenderer.drawStringWithShadow(currentDateTime, 2 * width - 220, 2, 16777215); // Вывод даты и времени



GL11.glPopMatrix(); // Завершение трансформации


7. Полноценный код

package net.minecraft.fth;



import java.text.SimpleDateFormat;

import java.util.Date;

import org.lwjgl.opengl.GL11;

import net.minecraft.client.Minecraft;

import net.minecraft.src.GuiIngame;



public class Future {



    public static Minecraft mc; // Экземпляр Minecraft



    private String pingTimeStr = "Ping: 0 ms"; // Строка для отображения пинга

    private static String currentDateTime = ""; // Строка для хранения текущей даты и времени

    private static int dateTimeCounter = 0; // Счетчик для обновления времени



    public Future() {

        mc = Minecraft.getMinecraft(); // Инициализация mc

    }



    // Метод для обновления пинга

    public void updatePing(int newPing) {

        this.pingTimeStr = "Ping: " + newPing + " ms"; // Обновление строки с пингом

    }



    // Метод для отрисовки информации в GUI

    public void renderGUI(GuiIngame gui, int width, int height) {

        GL11.glPushMatrix(); // Начало трансформации для масштабирования

        GL11.glScalef(0.5F, 0.5F, 1.0F); // Масштабирование



        // Начальные координаты для отрисовки

        int startX = 44;

        int startY = 13;



        // Получение имени игрока

        String playerName = mc.thePlayer.username;

        mc.fontRenderer.drawStringWithShadow(playerName, startX + 20, startY - 10, 16777215); // Вывод никнейма



        // Отображение времени пинга

        mc.fontRenderer.drawStringWithShadow(this.pingTimeStr, 2 * width - 120, 2, 16777215); // Вывод пинга



        // Обновление и отображение текущей даты и времени

        if (dateTimeCounter == 0) {

            SimpleDateFormat sd = new SimpleDateFormat("dd.MM.yyyy HH:mm");

            currentDateTime = sd.format(new Date()); // Обновление строки с текущей датой и временем

            dateTimeCounter = 1000; // Сброс счетчика

        } else {

            dateTimeCounter--;

        }

        mc.fontRenderer.drawStringWithShadow(currentDateTime, 2 * width - 220, 2, 16777215); // Вывод даты и времени



        GL11.glPopMatrix(); // Завершение трансформации

    }

}


Что Вы узнали в этом уроке:

1. Создание класса: Вы создали класс, который отвечает за отображение информации в GUI.
2. Инициализация Minecraft: Вы узнали, как получить доступ к экземпляру Minecraft для взаимодействия с игровым миром.
3. Обновление данных: Вы научились обновлять значения пинга и текущей даты/времени.
4. Отрисовка информации: Вы реализовали метод для отрисовки информации на экране с использованием OpenGL.
5. Интеграция с игрой: Вы узнали, как интегрировать ваш класс в основной цикл игры, чтобы информация обновлялась в реальном времени.


Урок второй. Создание логики разрушения и строительства блоков + вывод
Технические шоколадки

Если Вам понравилось, накидайте лайков. Данная тема будет обновляться.
карма: 49
4
Голосовали:Strife, Shmel, NePalevo, Alamartlt
Ответов: 132
Alliance
0xffffff
#2: 2025-01-27 18:31:25 ЛС | профиль | цитата
Burs писал(а):
популяризации программирования и профессии программиста

Куда больше...
карма: -17
2
Голосовали:Burs, lbvtynjh
Ответов: 336
Silence
Безмолвие
#3: 2025-01-27 18:39:30 ЛС | профиль | цитата
Было бы круто увидеть уроки по созданию плагинов. Вот это для меня было бы полезным.
карма: -20
Я пример отблеска высшей гармонии
0
Ответов: 20
rakuzan
rakuzan
#4: 2025-01-27 21:34:27 ЛС | профиль | цитата
Круг замкнулся. Сначала программисты учились играть в майн, теперь игроки учатся программировать
карма: 0
helos
0
Ответов: 3092
Monte Carlo
Твинки КМ
#5: 2025-01-28 01:55:18 ЛС | профиль | цитата
А что, в программировании еще остались творческие личности?
карма: -40
Мухрад/Мурад - семнадцатый султан Османской империи. означает «желанный», «цель» или «замысел».
0
Модератор форума
Ответов: 4637
Noir Villar
Дионис
#6: 2025-01-28 09:24:01 ЛС | профиль | цитата
Burs писал(а):
Выберите свой возраст

а где?
карма: 76
0
Ответов: 1054
TRoN
Платит за КМ
#7: 2025-01-28 22:30:08 ЛС | профиль | цитата
а что 28+, мы шутка какая ...?((((


Хотелось бы не только текстовый формат но и видосик с объяснением, не воспринимаю текст....((
карма: 125
0
7
Сообщение
...