Автор: Лао Цзю — Техническое Просо.
оригинал:Developing Games in Java
социальный контакт:Знай почти
публика:Академия Old Nine (новоприбывших ждут сюрпризы)
Специальное заявление: Нелегко быть оригинальным, и перепечатка или плагиат не допускаются без разрешения.Если вам нужно перепечатать, вы можете связаться с автором для получения разрешения.
предисловие
Нам определенно не нужно использовать алгоритмы, когда мы занимаемся веб-разработкой, а когда мы используем Java для разработки веб-сервисов, мы вообще не используем никаких алгоритмов, включая разработку различных распределенных микросервисных приложений.
Однако пока мы разрабатываем игры, обычно используются алгоритмы.
Что такое алгоритм?
Алгоритм — это эффективный метод решения проблемы с использованием ограниченной последовательности инструкций. (Алгоритм — это эффективный метод решения задачи с использованием конечной последовательности инструкций).
Каждый алгоритм представляет собой определенный (фиксированный) список сложных задач, которые необходимо выполнить. Алгоритм начинается с начального состояния, затем инструкции описывают фиксированную последовательность обработки до успешного состояния и, наконец, до конечного состояния.
Структура данных — связанный список указателей
Каждый элемент в списке указателей имеет тип pointer (встроенный указатель класса Java) и содержит в списке два целых числа, представленных координатами x и y указателя. Кроме того, поскольку класс Point встроен в Java, объектно-ориентированное программирование уже может использовать его таким образом.
Структура указателя: это линейная структура, которая использует узел для указания на другой узел от начального узла до конечной точки.
См. иллюстрацию ниже
кодовое соответствие
Сортировка вставками
Правило состоит в том, чтобы вставлять элемент, подлежащий сортировке, за раз, в соответствии с размером его ключа, в соответствующую позицию в отсортированной перед ним подпоследовательности до тех пор, пока не будут вставлены все записи. Этот метод часто используется в играх в бридж. В компьютерной программе нам нужно убедиться, что есть место для вставки новых элементов, и разместить справа от него более крупные элементы. Как показано ниже:
класс ListSortExample
import static java.lang.System.*;
/**
功能:使用链表数据结构实现的插入排序
作者:技术大黍
备注:使用单向链表数据结构来实现插入排序算法--使用链表的操作列表的速度最快!
*/
public class ListSortExample{
//定义一个抽象数据Node用来表示指针类型
static class Node{
int val; //实现数据
Node next; //指针
//使用结构方法来初始化指针链表
Node(int v, Node t) {
val = v;
next = t;
}
}
//创建链表结点--从控制台读取数据
static Node create(){
//声明第一个结点,并且初始化它
Node a = new Node(0, null);
out.println("请输入数字:(按ctrl+z表示输入结果)");
//如果控制台输入不结束,那么一直创建链表
for (In.init(); !In.empty(); )
a.next = new Node(In.getInt(), a.next);
return a;
}
//对链表进行排序处理
static Node sort(Node a) {
Node t, u, x, b = new Node(0, null);
//如果传入的参数a下一个结点不为空
while (a.next != null){
//那么把a的指针指向t结点
t = a.next;
//把t结点的指针指向u结点
u = t.next;
//把a的指针指向u--于是现是a->u->t
a.next = u;
//下面是排序的交换算法:如果链表中大于一的元素,那么开始排序
for (x = b; x.next != null; x = x.next)
if (x.next.val > t.val)
break;
//否则把b的指针指向t的指针
t.next = x.next;
//然后把b的指针指向t结点
x.next = t;
}
return b;
}
//在控制台显示排序结果
static void print(Node h){
out.println("插入排序结果为:");
for (Node t = h.next; t != null; t = t.next)
out.println(t.val + "");
}
public static void main(String[] args) {
print(sort(create()));
}
}
текущий результат
Суммировать
Алгоритмы на самом деле везде.Когда мы используем API, предоставляемый Java, мы уже используем алгоритмы, такие как LinkedList, Vector, List, Queue и т. д., но эти алгоритмы предоставлены другими и проверены на практике классом инструментов.
Однако все мы знаем, что с точки зрения алгоритмов лучшего нет, есть только лучше. Поэтому при разработке игр иногда нам приходится самим писать алгоритмы, чтобы выполнить определенные требования.
Наконец
Не забудьте дать большое просо❤️Подписаться + Нравится + Избранное + Комментарий + Переслать ❤️
Автор: Школа Лао Цзю — технология Big Millet.
Авторские права принадлежат автору. Для коммерческих перепечаток, пожалуйста, свяжитесь с автором для получения разрешения, а для некоммерческих перепечаток, пожалуйста, укажите источник.