Файл: Классификация языков программирования (Критерии выбора среды и языка разработки программ).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.03.2023

Просмотров: 43

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

float rot_time = Quaternion.Angle(target_rot, transform.rotation) / degreePerSecond;

Debug.Log(rot_time);

while (Quaternion.Angle(target_rot, transform.rotation) > 2 && elapsed_time < rot_time)

{

elapsed_time += Time.deltaTime;

transform.rotation = Quaternion.Slerp(start_rot, target_rot, (elapsed_time / rot_time));

yield return new WaitForEndOfFrame();

}

// end rotate

if (getGameObjType(type) != _Wind)

{

GameObject attack = (GameObject)Instantiate(getGameObjType(type), orb_Spot.transform.position, this.transform.rotation);

attack.GetComponent<Rigidbody>().AddForce(doAttackAngle * getSpeedObjType(type), ForceMode.Impulse);

}

else

{

GameObject wind = (GameObject)Instantiate(getGameObjType(type));

wind.transform.position = orb_Spot.transform.position;

Vector3 v = attackTarget.transform.position;

wind.transform.LookAt(v);

wind.transform.Rotate(new Vector3(90, wind.transform.rotation.y, wind.transform.rotation.z));

}

}

}

}

}

void DrawFieldOfAttack()

{

int stepCount = Mathf.RoundToInt(attackAngle * meshResolution);

float stepAngleSize = attackAngle / stepCount;

List<Vector3> viewPoints = new List<Vector3>();

ViewCastInfo oldViewCast = new ViewCastInfo();

for (int i = 0; i <= stepCount; i++)

{

float angle = transform.eulerAngles.y - attackAngle / 2 + stepAngleSize * i;

ViewCastInfo newViewCast = ViewCast(angle);

if (i > 0)

{

bool edgeDstThresholdExceeded = Mathf.Abs(oldViewCast.dst - newViewCast.dst) > edgeDstThreshold;

if (oldViewCast.hit != newViewCast.hit || (oldViewCast.hit && newViewCast.hit && edgeDstThresholdExceeded))

{

EdgeInfo edge = FindEdge(oldViewCast, newViewCast);

if (edge.pointA != Vector3.zero)

{

viewPoints.Add(edge.pointA);

}

if (edge.pointB != Vector3.zero)

{

viewPoints.Add(edge.pointB);

}

}

}

viewPoints.Add(newViewCast.point);

oldViewCast = newViewCast;

}

int vertexCount = viewPoints.Count + 1;

Vector3[] vertices = new Vector3[vertexCount];

int[] triangles = new int[(vertexCount - 2) * 3];

vertices[0] = Vector3.zero;

for (int i = 0; i < vertexCount - 1; i++)

{

vertices[i + 1] = transform.InverseTransformPoint(viewPoints[i]) + Vector3.forward * maskCutawayDst;

if (i < vertexCount - 2)

{

triangles[i * 3] = 0;

triangles[i * 3 + 1] = i + 1;

triangles[i * 3 + 2] = i + 2;

}

}

viewMesh.Clear();

viewMesh.vertices = vertices;

viewMesh.triangles = triangles;

viewMesh.RecalculateNormals();

}

EdgeInfo FindEdge(ViewCastInfo minViewCast, ViewCastInfo maxViewCast)

{

float minAngle = minViewCast.angle;

float maxAngle = maxViewCast.angle;

Vector3 minPoint = Vector3.zero;

Vector3 maxPoint = Vector3.zero;

for (int i = 0; i < edgeResolveIterations; i++)

{

float angle = (minAngle + maxAngle) / 2;

ViewCastInfo newViewCast = ViewCast(angle);

bool edgeDstThresholdExceeded = Mathf.Abs(minViewCast.dst - newViewCast.dst) > edgeDstThreshold;

if (newViewCast.hit == minViewCast.hit && !edgeDstThresholdExceeded)

{

minAngle = angle;

minPoint = newViewCast.point;

}

else

{

maxAngle = angle;

maxPoint = newViewCast.point;

}

}

return new EdgeInfo(minPoint, maxPoint);

}

ViewCastInfo ViewCast(float globalAngle)

{

Vector3 dir = DirFromAngle(globalAngle, true);

RaycastHit hit;

if (Physics.Raycast(transform.position, dir, out hit, attackRadius, obstacleMask))

{

return new ViewCastInfo(true, hit.point, hit.distance, globalAngle);

}

else

{

return new ViewCastInfo(false, transform.position + dir * attackRadius, attackRadius, globalAngle);

}

}

public Vector3 DirFromAngle(float angleInDegrees, bool angleIsGlobal)

{

if (!angleIsGlobal)

{

angleInDegrees += transform.eulerAngles.y;

}

return new Vector3(Mathf.Sin(angleInDegrees * Mathf.Deg2Rad), 0, Mathf.Cos(angleInDegrees * Mathf.Deg2Rad));


}

public struct ViewCastInfo

{

public bool hit;

public Vector3 point;

public float dst;

public float angle;

public ViewCastInfo(bool _hit, Vector3 _point, float _dst, float _angle)

{

hit = _hit;

point = _point;

dst = _dst;

angle = _angle;

}

}

public struct EdgeInfo

{

public Vector3 pointA;

public Vector3 pointB;

public EdgeInfo(Vector3 _pointA, Vector3 _pointB)

{

pointA = _pointA;

pointB = _pointB;

}

}

}

public class MagesAttackType

{

public enum MageType

{

None,

Fire,

Water,

Earth,

Wind

}

public MageType attackType;

public GameObject attackPref;

}

Часть плагина авторизации на Java

package ru.redzver.joinallow;

import java.io.File;

import java.util.logging.Logger;

import org.bukkit.ChatColor;

import org.bukkit.configuration.file.YamlConfiguration;

import org.bukkit.plugin.java.JavaPlugin;

public class JoinAllow extends JavaPlugin {

public static JoinAllow Instance;

public static String PluginNameWColor = ChatColor.YELLOW + "[" + ChatColor.GREEN + "JoinAllow" + ChatColor.YELLOW + "]" + ChatColor.GRAY;

public static String PluginName = "[JoinAllow]";

public static String JoinMessage = "{player} joined the game";

public static String TimeMessage = "subscription ending in {endtime}";

public static String KickMessage = "{player}, subscription expires";

public static String SiteUrl = "http://minecraft.local/";

public static String SiteOutLocal = "en";

private File configFile;

private YamlConfiguration config;

private static Logger log = Logger.getLogger("Minecraft");

@Override

public void onEnable() {

Instance = this;

RegisterListeners();

InitConfig();

LoadConfigData();

Log("Enabled");

}

@Override

public void onDisable() {

Log("Disabled");

}

public static void Log(String msg) {

log.info(PluginName + " " + msg);

}

private void RegisterListeners() {

getServer().getPluginManager().registerEvents(new PlayerLoginListener(), this);

}

private void InitConfig() {

configFile = new File(getDataFolder(), "config.yml");

if(!configFile.exists()) {

saveResource("config.yml", true);

}

config = new YamlConfiguration();

try {

config.load(configFile);

} catch (Exception e) {

e.printStackTrace();

}

}

private void LoadConfigData() {

JoinMessage = Utils.ReplaceColor(config.getString("JoinMessage"));

KickMessage = Utils.ReplaceColor(config.getString("KickMessage"));

TimeMessage = Utils.ReplaceColor(config.getString("TimeMessage"));

SiteOutLocal = config.getString("SiteOutLocal");

}

}

    1. Список используемой литературы

  1. Байдачный С.С. .NET Framework. Секреты создания Windows-приложений. – М.: СОЛОН-Пресс, 2004. – 496 с.
  2. Гербердт Шилдт. C#: учебный курс. – СПб.: Питер; К.: Издательская группа BHV, 2003. – 512 c.: ил. СПб.: Питер, 2002. – 464 с.
  3. Медведев В.И. Особенности объектно-ориентированного программирования на C++/CLI, C# и Java. – Казань: РИЦ «Школа», 2008. – 360 c.– (Серия «Современная прикладная математика и информатика»).
  4. Медведев В.И. Программирование на С++, С++.NET/C# и .NET компоненты. – Казань: Мастер Лайн, 2006. – 296 c.
  5. Медведев В.И. Программирование на C++,C++.NETиC# (Серия “Современная прикладная математика и информатика”). – Казань: Мастер Лайн, 2005. – 270c.
  6. Петцольд Ч. Программирование для Microsoft Windows на C#. В 2-х томах/Пер. с англ. – М.: Издательско-торговый дом “Русская Редакция”, 2002. – 576 + 624 с.
  7. П. Наутон, Г. Шилдт. Java 2. Наиболее полное руководство в подлиннике.– СПб.: БХВ-Петербург, 2000. – 1072 с.
  8. Рамбо Дж., Якобсон А., Буч Г. UML: специальный справочник. – СПб.: Питер, 2002. – 656 c.