Общие алгоритмы программирования игр на Java

Алгоритм сортировки

Автор: Лао Цзю — Техническое Просо.

оригинал:Developing Games in Java

социальный контакт:Знай почти

публика:Академия Old Nine (новоприбывших ждут сюрпризы)

Специальное заявление: Нелегко быть оригинальным, и перепечатка или плагиат не допускаются без разрешения.Если вам нужно перепечатать, вы можете связаться с автором для получения разрешения.

предисловие

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

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

Что такое алгоритм?

Алгоритм — это эффективный метод решения проблемы с использованием ограниченной последовательности инструкций. (Алгоритм — это эффективный метод решения задачи с использованием конечной последовательности инструкций).

Каждый алгоритм представляет собой определенный (фиксированный) список сложных задач, которые необходимо выполнить. Алгоритм начинается с начального состояния, затем инструкции описывают фиксированную последовательность обработки до успешного состояния и, наконец, до конечного состояния.

Структура данных — связанный список указателей

Каждый элемент в списке указателей имеет тип pointer (встроенный указатель класса Java) и содержит в списке два целых числа, представленных координатами x и y указателя. Кроме того, поскольку класс Point встроен в Java, объектно-ориентированное программирование уже может использовать его таким образом.

Структура указателя: это линейная структура, которая использует узел для указания на другой узел от начального узла до конечной точки.

См. иллюстрацию ниже

image-20210412144704153.png

кодовое соответствие

image-20210412144756268.png

Сортировка вставками

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

image-20210412145447744.png

класс 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())); 
    } 
} 

текущий результат

image-20210412145813612.png

Суммировать

Алгоритмы на самом деле везде.Когда мы используем API, предоставляемый Java, мы уже используем алгоритмы, такие как LinkedList, Vector, List, Queue и т. д., но эти алгоритмы предоставлены другими и проверены на практике классом инструментов.

Однако все мы знаем, что с точки зрения алгоритмов лучшего нет, есть только лучше. Поэтому при разработке игр иногда нам приходится самим писать алгоритмы, чтобы выполнить определенные требования.

Наконец

Не забудьте дать большое просо❤️Подписаться + Нравится + Избранное + Комментарий + Переслать ❤️

Автор: Школа Лао Цзю — технология Big Millet.

Авторские права принадлежат автору. Для коммерческих перепечаток, пожалуйста, свяжитесь с автором для получения разрешения, а для некоммерческих перепечаток, пожалуйста, укажите источник.