Разработка трехмерного визуализатора алгоритмов

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 19.01.2017
Размер файла 3,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

import com.jme3.renderer.queue.RenderQueue;

import com.jme3.scene.Geometry;

import com.jme3.scene.Node;

import com.jme3.scene.shape.Box;

import com.jme3.scene.shape.Quad;

import com.jme3.system.AppSettings;

import com.jme3.texture.Image;

import com.jme3.texture.Texture;

import com.jme3.texture.Texture2D;

import de.lessvoid.nifty.Nifty;

import de.lessvoid.nifty.controls.Label;

import de.lessvoid.nifty.controls.TextField;

import de.lessvoid.nifty.elements.Element;

import de.lessvoid.nifty.elements.render.TextRenderer;

import de.lessvoid.nifty.screen.Screen;

import de.lessvoid.nifty.screen.ScreenController;

import java.util.ArrayList;

import java.util.Random;

import java.util.Vector;

import javafx.scene.text.Font;

import mygame.Main;

import mygame.MyBox;

import mygame.sorting.ConstraintArray;

public class MyStartScreen extends AbstractAppState implements ScreenController {

private Application app;

private AppStateManager stateManager;

private Nifty nifty;

private Screen screen;

private int step;

private int totalStep;

private ArrayList<MyBox> vecBox;

private Geometry controllerGeom;

private Vector3f controllerVec3f;

private boolean auto;

private long prevTime;

//!!!!!!!!!!

public ConstraintArray constr;

public Random random;

private ColorRGBA standart = ColorRGBA.Gray;

private ColorRGBA select = ColorRGBA.Blue;

private ColorRGBA minimal = ColorRGBA.Red;

private ColorRGBA complete = ColorRGBA.LightGray;

private ColorRGBA moving = ColorRGBA.Pink;

private float speed = 10;

private boolean moveCompliteX = true;

private boolean moveCompliteY = true;

private boolean moveCompliteZ = true;

private boolean movingComplete = false;

//////////////

private float hightBox = 3;

private float weightBox = 3;

private float betweenBox = 1;

///////////////

//private ViewPort viewPort;

private final Node rootNode;

private final Node guiNode;

private final AssetManager assetManager;

private final Node localRootNode = new Node("Start Screen RootNode");

private final Node localGuiNode = new Node("Start Screen GuiNode");

//private final ColorRGBA backgroundColor = ColorRGBA.Gray;

private int distance=0;

private BitmapText distanceText;

private AppSettings settings;

public MyStartScreen(Main app, AppSettings settings){

this.app = app;

this.stateManager = app.getStateManager();

this.rootNode = app.getRootNode();

//this.viewPort = app.getViewPort();

this.guiNode = app.getGuiNode();

this.assetManager = app.getAssetManager();

this.settings = settings;

}

private Geometry createController(Vector3f loc){

Box mesh = new Box(Vector3f.ZERO,1,2,1);

Geometry geom = new Geometry("controller", mesh);

Material mat2 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");

mat2.setColor("Color", ColorRGBA.Brown);

Material mat1 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");

mat1.setColor("Ambient",ColorRGBA.Blue);

mat1.setColor("Diffuse",ColorRGBA.Blue);

mat1.setColor("Specular",ColorRGBA.Green);

mat1.setBoolean("UseMaterialColors",true);

mat1.setFloat("Shininess", 5);

geom.setMaterial(mat2);

geom.setLocalTranslation(loc);

return geom;

}

@Override

public void initialize(AppStateManager stateManager, Application app) {

super.initialize(stateManager, app);

app.getInputManager().setCursorVisible(true);

this.vecBox = new ArrayList<MyBox>();

//TODO: initialize your AppState, e.g. attach spatials to rootNode

//this is called on the OpenGL thread after the AppState has been

//attached

random = new Random();

rootNode.attachChild(localRootNode);

guiNode.attachChild(localGuiNode);

//viewPort.setBackgroundColor(backgroundColor);

step = 0;

totalStep = 0;

this.constr = new ConstraintArray();

this.prevTime = System.currentTimeMillis();

this.controllerVec3f = new Vector3f(-3,0,0);

this.controllerGeom = this.createController(this.controllerVec3f);

this.rootNode.attachChild(this.controllerGeom);

}

@Override

public void update(float tpf) {

//TODO: implement behavior during runtime

if(this.auto && (System.currentTimeMillis() - this.prevTime)>1000 &&

this.movingComplete){

if(this.step < this.totalStep)

this.step++;

}

if(this.moveCompliteX == false &&

this.moveCompliteY == false &&

this.moveCompliteZ == false)

{

this.movingComplete = false;

}

if(this.moveCompliteX == true &&

this.moveCompliteY == true &&

this.moveCompliteZ == true)

{

this.movingComplete = true;

}

if(this.step < this.totalStep){

//проверканакоординаты.

for(int i = this.constr.sizeVal()-1; i > -1; i-- ){

if(this.vecBox.get(i).getVector3f().x

>

this.constr.constArrayCube.

get(this.step).arrayListCube.get(i).x)

{

this.vecBox.get(i).setVector3f(

new Vector3f(

(float)(this.vecBox.get(i).getVector3f().x -speed*tpf),

this.vecBox.get(i).getVector3f().y,

this.vecBox.get(i).getVector3f().z

)

);

}

if(this.vecBox.get(i).getVector3f().x

<

this.constr.constArrayCube.get(this.step).arrayListCube.get(i).x )

{

this.vecBox.get(i).setVector3f(

new Vector3f(

(float)(this.vecBox.get(i).getVector3f().x +speed*tpf),

this.vecBox.get(i).getVector3f().y,

this.vecBox.get(i).getVector3f().z

)

);

}

if(this.vecBox.get(i).getVector3f().x

==

this.constr.constArrayCube.get(this.step).arrayListCube.get(i).x )

{

this.moveCompliteX = true;

}

if(this.vecBox.get(i).getVector3f().y

>

this.constr.constArrayCube.get(this.step).arrayListCube.get(i).y )

{

this.vecBox.get(i).setVector3f(

new Vector3f(

this.vecBox.get(i).getVector3f().x ,

(float)(this.vecBox.get(i).getVector3f().y-speed*tpf),

this.vecBox.get(i).getVector3f().z

)

);

}

if(this.vecBox.get(i).getVector3f().y

<

this.constr.constArrayCube.get(this.step).arrayListCube.get(i).y )

{

this.vecBox.get(i).setVector3f(

new Vector3f(

this.vecBox.get(i).getVector3f().x ,

(float)(this.vecBox.get(i).getVector3f().y+speed*tpf),

this.vecBox.get(i).getVector3f().z

)

);

}

if(this.vecBox.get(i).getVector3f().y

==

this.constr.constArrayCube.get(this.step).arrayListCube.get(i).y )

{

this.moveCompliteY = true;

}

if(this.vecBox.get(i).getVector3f().z

>

this.constr.constArrayCube.get(this.step).arrayListCube.get(i).z )

{

this.vecBox.get(i).setVector3f(

new Vector3f(

this.vecBox.get(i).getVector3f().x ,

this.vecBox.get(i).getVector3f().y ,

(float)(this.vecBox.get(i).getVector3f().z +speed*tpf)

)

);

}

if(this.vecBox.get(i).getVector3f().z

<

this.constr.constArrayCube.get(this.step).arrayListCube.get(i).z )

{

this.vecBox.get(i).setVector3f(

new Vector3f(

this.vecBox.get(i).getVector3f().x ,

this.vecBox.get(i).getVector3f().y ,

(float)(this.vecBox.get(i).getVector3f().z +speed*tpf)

)

);

}

if(this.vecBox.get(i).getVector3f().z

==

this.constr.constArrayCube.get(this.step).arrayListCube.get(i).z )

{

this.moveCompliteZ = true;

}

//проверкацвета

if(this.constr.constArrayCube.get(this.step).getColorByNum(i).

equals("standart")){

if(this.vecBox.get(i).getColor()!=this.standart){

vecBox.get(i).setColor(this.standart);

}

}

if(this.constr.constArrayCube.get(this.step).getColorByNum(i).

equals("select")){

if(this.vecBox.get(i).getColor()!=this.select){

vecBox.get(i).setColor(this.select);

}

}

if(this.constr.constArrayCube.get(this.step).getColorByNum(i).

equals("minimal")){

if(this.vecBox.get(i).getColor()!=this.minimal){

vecBox.get(i).setColor(this.minimal);

}

}

if(this.constr.constArrayCube.get(this.step).getColorByNum(i).

equals("moving")){

if(this.vecBox.get(i).getColor()!=this.moving){

vecBox.get(i).setColor(this.moving);

}

}

if(this.constr.constArrayCube.get(this.step).getColorByNum(i).

equals("complete")){

if(this.vecBox.get(i).getColor()!=this.complete){

vecBox.get(i).setColor(this.complete);

}

}

}

//Controller

if(this.controllerVec3f.x

>

this.constr.constArrayCube.get(this.step).locateController.x )

{

this.controllerVec3f = (

new Vector3f(

(float)(this.controllerVec3f.x - speed*tpf) ,

this.controllerVec3f.y,

this.controllerVec3f.z

)

);

}

if(this.controllerVec3f.x

<

this.constr.constArrayCube.get(this.step).locateController.x )

{

this.controllerVec3f = (

new Vector3f(

(float)(this.controllerVec3f.x + speed*tpf) ,

this.controllerVec3f.y,

this.controllerVec3f.z

)

);

}

if(this.controllerVec3f.y

>

this.constr.constArrayCube.get(this.step).locateController.y )

{

this.controllerVec3f = (

new Vector3f(

this.controllerVec3f.x ,

(float)(this.controllerVec3f.y-speed*tpf),

this.controllerVec3f.z

)

);

}

if(this.controllerVec3f.y

<

this.constr.constArrayCube.get(this.step).locateController.y )

{

this.controllerVec3f = (

new Vector3f(

this.controllerVec3f.x ,

(float)(this.controllerVec3f.y+speed*tpf),

this.controllerVec3f.z

)

);

}

if(this.controllerVec3f.z

<

this.constr.constArrayCube.get(this.step).locateController.z )

{

this.controllerVec3f = (

new Vector3f(

this.controllerVec3f.x ,

this.controllerVec3f.y,

(float)(this.controllerVec3f.z+speed*tpf)

)

);

}

if(this.controllerVec3f.z

>

this.constr.constArrayCube.get(this.step).locateController.z )

{

this.controllerVec3f = (

new Vector3f(

this.controllerVec3f.x ,

this.controllerVec3f.y,

(float)(this.controllerVec3f.z-speed*tpf)

)

);

}

}

}

@Override

public void cleanup() {

super.cleanup();

//TODO: clean up what you initialized in the initialize method,

//e.g. remove all spatials from rootNode

//this is called on the OpenGL thread after the AppState has been detached

rootNode.detachChild(localRootNode);

guiNode.detachChild(localGuiNode);

this.app = null;

this.stateManager = null;

}

public void bind(Nifty nifty, Screen screen) {

this.nifty = nifty;

this.screen = screen;

}

public void onStartScreen() {

// throw new UnsupportedOperationException("Not supported yet.");

}

public void onEndScreen() {

//throw new UnsupportedOperationException("Not supported yet.");

}

public void Start(String nextScreen) {

nifty.gotoScreen(nextScreen); // switch to another screen

// start the game and do some more stuff...

}

public void Info(){

}

public void Option(){

}

public void Quit() {

app.stop();

}

public void Next(){

if(auto){

this.auto = false;

}

if(this.movingComplete == false){

return;

}

if(this.step < this.totalStep)

{

this.movingComplete = false;

this.step++;

nifty.getCurrentScreen().findNiftyControl("Label_Condition", TextField.class).setText(this.step+"/"+this.totalStep);

}else{

nifty.getCurrentScreen().findNiftyControl("TextInfo", Label.class).setText("Can't go top maximal");

}

}

public void Prev(){

if(auto){

this.auto = false;

}

if(this.movingComplete == false){

return;

}

if(this.step > -1)

{

this.movingComplete = false;

this.step--;

this.moveCompliteX = false;

this.moveCompliteY = false;

this.moveCompliteZ = false;

nifty.getCurrentScreen().findNiftyControl("Label_Condition", TextField.class).setText(this.step+"/"+this.totalStep);

}else{

nifty.getCurrentScreen().findNiftyControl("TextInfo", Label.class).setText("Can't go below minimal");

}

}

public void Play(){

this.auto = true;

}

public void AddBox(){

if(this.moveCompliteX == false &&

this.moveCompliteY == false &&

this.moveCompliteZ == false){

return;

}

if(auto){

this.auto = false;

}

String valText =

nifty.getCurrentScreen().findNiftyControl("TextField_BoxValue", TextField.class).getRealText();

nifty.getScreen("hud").findElementById("TextField_BoxValue").getRenderer(TextRenderer.class).getOriginalText();

Vector3f newLocation =

new Vector3f(this.vecBox.size()*(this.weightBox

+ this.betweenBox),0,-10);

MyBox newBox = new MyBox(

assetManager,

"Cube"+this.vecBox.size(),

Integer.parseInt(valText),

newLocation,

this.standart

);

this.constr.addDefValue(Integer.parseInt(valText));

this.constr.addDefVector3f(newLocation);

this.constr.setConstraints();

this.totalStep = this.constr.constArrayCube.size();

this.vecBox.add(newBox);

this.rootNode.attachChild(newBox.getBox());

this.rootNode.attachChild(newBox.getValTextureGeom());

}

public void AddBoxRandom(){

if(this.moveCompliteX == false &&

this.moveCompliteY == false &&

this.moveCompliteZ == false){

return;

}

if(auto){

this.auto = false;

}

Integer val = this.random.nextInt(9);

Vector3f newLocation =

new Vector3f(this.vecBox.size()*(this.weightBox

+ this.betweenBox),0,-10);

MyBox newBox = new MyBox(

assetManager,

"Cube"+this.vecBox.size(),

val,

newLocation,

this.standart

);

this.constr.addDefValue(val);

this.constr.addDefVector3f(newLocation);

this.constr.setConstraints();

this.totalStep = this.constr.constArrayCube.size();

this.vecBox.add(newBox);

this.localRootNode.attachChild(newBox.getBox());

this.rootNode.attachChild(newBox.getValTextureGeom());

}

public String getPlayerName(){

return System.getProperty("user.name");

}

public void setTotalStep(int totStep){

this.totalStep = totStep;

}

}

Приложение Е

Разработанный XML документ, отвечающий за интерфейс программы.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<nifty xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://nifty-gui.lessvoid.com/nifty-gui"

xsi:schemaLocation="https://raw.githubusercontent.com/void256/nifty-gui/1.4/nifty-core/src/main/resources/nifty.xsd

https://raw.githubusercontent.com/void256/nifty-gui/1.4/nifty-core/src/main/resources/nifty.xsd">

<useControls filename="nifty-default-controls.xml"/>

<useStyles filename="nifty-default-styles.xml"/>

<screen id="start" controller="mygame.GUI.MyStartScreen">

<layer id="background" childLayout="center" >

<image id="GImage0" filename="Interface/startBackground.png"

width="100%" imageMode="normal" height="100%" />

</layer>

<layer id="foreground" childLayout="vertical" >

<panel id="panel_top" childLayout="center"

width="75%" align="center" height="25%">

<text text=" Hello ${CALL.getPlayerName()}'s "

font="Interface/Fonts/Default.fnt" width="100%"

height="100%">

<effect>

<onStartScreen name="move" mode="in"

direction="top" length="300"

startDelay="0" inherit="true"/>

</effect>

</text>

</panel>

<panel id="panel_mid" childLayout="center" width="75%"

align="center" valign="center" height="50%">

<text text="This visual instruction for sorting."

font="Interface/Fonts/Default.fnt" width="50%"

height="50%" />

</panel>

<panel id="panel_bottom" childLayout="horizontal"

width="75%" align="center" valign="center"

height="25%">

<panel id="panel_bottom_right" height="50%"

width="25%" valign="center" childLayout="center">

<control name="button" id="Button_Start"

label = "Start" align="center"

valign="center" width="50%" height="35%"

visibleToMouse="true">

<interact onClick="Start(choose)"/>

<effect>

<onClick name="playSound" sound="myclick"/>

</effect>

</control>

</panel>

<panel id="panel_bottom_mid1" height="50%" width="25%"

valign="center" childLayout="center">

<control name="button" id="Button_Option"

label = "Option" align="center"

valign="center" width="50%" height="35%"

visibleToMouse="true">

<interact onClick="Option()"/>

</control>

</panel>

<panel id="panel_bottom_mid2" height="50%" width="25%"

valign="center" childLayout="center">

<control name="button" id="Button_Info"

label = "Info"align="center"

valign="center" width="50%" height="35%"

visibleToMouse="true">

<interact onClick="Info()"/>

</control>

</panel>

<panel id="panel_bottom_left" height="50%" width="25%"

valign="center" childLayout="center">

<control name="button" id="Button_Quit"

label = "Quit"align="center"

valign="center" width="50%" height="35%"

visibleToMouse="true">

<interact onClick="Quit()"/>

</control>

</panel>

</panel>

</layer>

</screen>

<screen id="hud" controller="mygame.GUI.MyStartScreen">

<layer id="background" childLayout="center">

<image id="GImage0"

filename="Interface/hudBackground.png"

width="100%" imageMode="normal" height="100%" />

</layer>

<layer id="foreground" childLayout="horizontal" >

<panel id = "Panel_1" childLayout = "vertical"

width="40%" align="center" height="100%">

<panel id = "Panel_1_1" childLayout = "vertical"

width="100%" align="center" height="70%">

<panel id = "Panel_1_1_1" childLayout = "horizontal"

align = "left" valign = "top"

width = "20%" height = "10%">

<control name="button" id="Button_BoxRandom"

label = "Random" width="100%"

height="100%"visibleToMouse="true">

<interact onClick="AddBoxRandom()"/>

</control>

</panel>

</panel>

<panel id = "Panel_1_2" childLayout = "center"

width="100%" height="30%" align="center" >

<control id = "TextInfo" name = "textfield"

text = "info" width="90%" height ="90%"

wrap = "true" visibleToMouse="true"/>

</panel>

</panel>

<panel id = "Panel_2" childLayout = "vertical"

width="10%" align="center" height="100%">

<panel id = "Panel_2_1" childLayout = "vertical"

width="100%" align="center" height="80%">

</panel>

<panel id = "Panel_2_2" childLayout = "vertical"

width="100%" height="20%" align="center" >

<panel id = "Panel_2_2_1" childLayout = "center"

width="60%" height="20%" align="center">

<text text="Edit value:" font="Interface/Fonts/Arial2.fnt"

width="70%" height="80%" />

</panel>

<panel id = "Panel_2_2_2" childLayout = "center"

width="60%" height="20%" align="center">

<control name="textfield" id="TextField_BoxValue"

width="70%" height="80%" visibleToMouse="true"/>

</panel >

<panel id = "Panel_2_2_3" childLayout = "center"

width="60%" height="20%" align="center">

<control name="button" id="Button_BoxValue"

label = "Add" width="70%"

height="80%"visibleToMouse="true">

<interact onClick="AddBox()"/>

</control>

</panel>

</panel>

</panel>

<panel id = "Panel_3" childLayout = "vertical"

width="35%" align="center" height="100%">

<panel id = "Panel_3_1" childLayout = "vertical"

width="100%" align="center" height="90%">

</panel>

<panel id = "Panel_3_2" childLayout = "horizontal"

width="100%" height="10%" align="center" >

<panel id = "Panel_3_2_0" childLayout = "center"

width="10%" height="80%" align="center" >

</panel>

<panel id = "Panel_3_2_1" childLayout = "center"

width="25%" height="80%" align="center" >

<control name="button" id="Button_Prev"

label = "Prev" width="80%"

height="80%" visibleToMouse="true">

<interact onClick="Prev()"/>

</control>

</panel>

<panel id = "Panel_3_2_2" childLayout = "center"

width="25%" height="80%" align="center" >

<control name="button" id="Button_Play"

label = "Play" width="80%"

height="80%" visibleToMouse="true">

<interact onClick="Play()"/>

</control>

</panel>

<panel id = "Panel_3_2_3" childLayout = "center"

width="25%" height="80%" align="center" >

<control name="button" id="Button_Next"

label = "Next" width="80%"

height="80%" visibleToMouse="true">

<interact onClick="Next()"/>

</control>

</panel>

</panel>

</panel>

<panel id = "Panel_4" childLayout = "vertical"

width="15%" align="center" height="100%">

<panel id = "Panel_4_1" childLayout = "vertical"

width="100%" align="center" height="10%">

<control name="label" id="Label_Condition"

text="1/0" width="25%" height="80%"

visibleToMouse="true">

</control>

</panel>

<panel id = "Panel_4_2" childLayout = "vertical"

width="100%" height="90%" align="center" >

</panel>

</panel>

</layer>

</screen>

<screen id="choose" controller="mygame.GUI.MyStartScreen">

<layer id="background" childLayout="center" >

<image id="GImage0"

filename="Interface/startBackground.png"

width="100%" imageMode="normal" height="100%" />

</layer>

<layer id="foreground" childLayout="vertical" >

<panel id="panel_top" childLayout="center"

width="75%" align="center" height="25%">

<text text=" Choose what type sorting you want: "

font="Interface/Fonts/Default.fnt"

width="100%" height="100%">

<effect>

<onStartScreen name="move" mode="in"

direction="top"

length="300" startDelay="0"

inherit="true"/>

</effect>

</text>

</panel>

<panel id="panel_mid" childLayout="vertical"

width="75%" align="center"

valign="center" height="50%">

<panel id="panel_mid_1" height="25%"

width="50%" valign="center"

childLayout="center">

<control name="button"

id="Button_BubleSort"

label = "Buble Sort"

align="center" valign="center"

width="50%" height="35%"

visibleToMouse="true">

<interact onClick="Start(hud)"/>

<effect>

<onClick name="playSound" sound="myclick"/>

</effect>

</control>

</panel>

<panel id="panel_mid_2" height="25%"

width="50%" valign="center"

childLayout="center">

<control name="button"

id="Button_HoarSort"

label = "Hoar Sort"

align="center" valign="center"

width="50%" height="35%"

visibleToMouse="true">

<effect>

<onClick name="playSound"

sound="myclick"/>

</effect>

</control>

</panel>

<panel id="panel_mid_3" height="25%"

width="50%" valign="center"

childLayout="center">

<control name="button"

id="Button_FastSort"

label = "Fast Sort"

align="center" valign="center"

width="50%" height="35%"

visibleToMouse="true">

<effect>

<onClick name="playSound"

sound="myclick"/>

</effect>

</control>

</panel>

</panel>

</layer>

</screen>

</nifty>

Приложение Ж

Описание класса «ClassArrayOfCube».

Класс для хранения информации о элементах состояния сортировки. Имеет ряд членов:

1)Переменная размер сортируемого массива.Используется для быстрого доступа внутри массива.

intsizeArray

2) Массив из чисел, отвечающих за значение объекта в сортируемом массиве.

ArrayList<Integer>arrayListValue.

3)Массив из чисел, отвечающих за координаты объекта в сортируемом массиве

ArrayList<Vector3f>arrayListCube.

4)Массив из чисел, отвечающих за цвет объекта в сортируемом массиве

ArrayList<String>arrayListColor.

5)Переменная строка, отвечающая за пояснение шага сортировки

StringtextInfo.

6)Переменная - координата, состоящая из трех не целых чисел. Отвечает за координаты контроллера в этот шаг сортировки (Vector3flocateController).

Так же класс имеет ряд методов:

1) Метод - конструктор. Отвечает за построение состояния при передаче данных с отсутствием аргументов

ArrayOfCube()

2) Метод - конструктор. Отвечает за построение состояния при передаче данных с аргументами: 1) Массив координат; 2) Массив значений.

ArrayOfCube(ArrayList<Vector3f> newArray, ArrayList<Integer>

newValues)

3) Метод - конструктор. Отвечает за построение состояния при передаче данных с аргументами: 1)Массив координат; 2) Массив значений; 3)Координаты контроллера.

ArrayOfCube(ArrayList<Vector3f> newArray,

ArrayList<Integer> newValues,

Vector3f newLocationController)

4) Метод - конструктор копирования. Отвечает за построение состояния при передаче данных с аргументом - указателем на другой объект аналогичный создаваемому.

ArrayOfCube(ArrayOfCubebase)

5) Метод для задания информации о шаге сортировки.

setTextInfo(Stringstr) Метод для получения информации о шаге сортировки.

getTextInfo()

6) Метод для задания координаты элемента по номеру.

setLocalByNum(int num, Vector3f newVec)

7) Метод для получения координаты по номеру.

getLocalByNum(int num)

8) Метод для получения размера сортируемого массива.

GetSize()

9) Метод для добавления элемента в массив.

addToArray(Vector3f location, Integer value)

10) Метод для получения значения объекта сортируемого массива по номеру.

getValueByNum(int num)

11) Метод для получения цвета объекта сортируемого массива по номеру.

getColorByNum(int num)

12) Метод для задания координат контроллера.

setControllerLocate(Vector3f newLocate)

13) Метод для задания цвета элемента сортируемого массива по номеру.

setColorByNum(int num, String newColor)

14) Метод для задания всем элементам массива стандартного цвета.

setDefColor()

15) Метод для задания массивов с переданных аргументов.

setArray(ArrayList<Vector3f> newArray, ArrayList<Integer> newValues)

16) Метод для задания массива координат объектов сортируемого массива.

setArrayVectors(ArrayList<Vector3f> newArray)

17) Метод для задания значения объекта сортируемого массива по номеру этого объекта.

setValByNum(int num, int val)

Приложение З

Описание класса «ClassConstraintArray»

Класс для хранения набора состояний. Имеет ряд членов:

1) Массив состояний .

constArrayCube;

2) Переменные, отвечающие за хранение размеров сортируемых объектов.

- Высота (heightObject).

- Ширина (wightObject).

- Расстояние между объектами (between).

3) Переменная, отвечающая за хранение информации об окончании построения массива состояний.

notFinish.

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

prevConstraint.

5) Массив значений, хранящий начальные значения массива.

defArrayValue.

6) Массив координат, хранящий начальные координаты массива.

defArrayVector.

7) Переменная, отвечающая за хранение начальной координаты контроллера.

defControllerLocation.

Так же существует ряд методов:

1) Метод - конструктор, отвечающий за создание экземпляра класса при передаче данных без аргументов. Задает стандартные значения.

ConstraintArray().

2) Метод - конструктор, отвечающий за создание экземпляра класса при передаче данных с аргументами стандартных массивов координат, значений.

ConstraintArray(

ArrayList<Vector3f> defArray ,

ArrayList<Integer> defValue).

3) Метод для добавления элемента стандартного значения координат в набор координат.

addDefVector3f(Vector3f newVec).

4) Метод для добавления элемента в массив хранящихся стандартных значений сортируемого массива.

addDefValue(IntegernewVal).

5) Метод для получения размера стандартного начального массива значений.

sizeVal().

6) Метод для задания начальных массивов. setDefArrays (ArrayList<Vector3f> newVec, ArrayList<Integer> newVal).

7) Метод для заданий высоты сортируемого объекта.

setHeight(float h).

8) Метод для получения значения высоты сортируемого объекта.

getHeight().

9) Метод для задания высоты сортируемого объекта.

setWight(floatw)

10) Метод для получения значения ширины сортируемого объекта.

getWight().

11) Метод для задания расстояния между сортируемыми объектами.

setBetween(floatb).

12) Метод для получения значения расстояния между сортируемыми объектами заданном в этом объекте.

getBetween().

13) Метод для задания координат начального положения контроллера.

setController(Vector3fnewControllerLocation).

14) Метод для задания массива состояний. Является сердцем программы.

setConstraints()

15) Метод, отвечающий за изменения связанные с перемещением элементов в массиве значений во время построения массива состояний.

mainChanging(int prevSort, Integer min, Integer numMin, Integer steadyState).

16) Метод, отвечающий за перенос контроллера за элемент с номером.

moveConrtoller(intprevSort).

17) Метод, отвечающий за смещение объектов для освобождения места.

relaxLocation(int prevSort, Integer numMin).

18) Метод, отвечающий за действия подготовки к перемещению в начало.

backToBegin(IntegernumMin).

19) Метод, отвечающий за добавление начального состояния в массив состояний.

addFirstState(Vector3fcontrollerLocation).

20) Метод, отвечающий за присвоение минимального числа первому элементу из не отсортированной части массива.

setMinFirsOfNotSort(IntegernumMin).

21) Метод, отвечающий за создание состояния в котором текущий элемент (тот который по номеру равен номеру цикла) становиться выбранным на проверку. Этот элемент становиться цвета «Select».

setSelectColor(int objnumi, Integer numMin).

22) Метод, отвечающий за создание состояния в котором текущий элемент (тот, что с номером цикла) становиться минимальным.

setCurrentMin(int currentObject, Integer numMin).

23) Метод, отвечающий за перемещение объекта с номером в новые координаты которые передаются в аргументе.

setMoving(Integer numObject,Vector3f newLocetionObj).

Приложение И

Описание класса «ClassMain».

package mygame;

import com.jme3.app.SimpleApplication;

import com.jme3.font.BitmapFont;

import com.jme3.font.BitmapText;

import com.jme3.math.Vector3f;

import com.jme3.niftygui.NiftyJmeDisplay;

import com.jme3.renderer.RenderManager;

import de.lessvoid.nifty.Nifty;

import mygame.GUI.MyStartScreen;

public class Main extends SimpleApplication {

private MyStartScreen myMainMenuController;

public static void main(String[] args) {

Main app = new Main();

app.start();

}

@Override

public void simpleInitApp() {

setDisplayFps(false);

setDisplayStatView(false);

flyCam.setMoveSpeed(10f);

flyCam.setDragToRotate(true);

inputManager.setCursorVisible(true);

myMainMenuController = new MyStartScreen(this, this.settings);

stateManager.attach(myMainMenuController);

NiftyJmeDisplay niftyDisplay = new NiftyJmeDisplay(assetManager,

inputManager, audioRenderer, guiViewPort);

Nifty nifty = niftyDisplay.getNifty();

guiViewPort.addProcessor(niftyDisplay);

nifty.fromXml("Interface/StartScreen.xml",

"start", myMainMenuController);

//nifty.setDebugOptionPanelColors(true);

flyCam.setDragToRotate(true);

stateManager.getApplication().getCamera().

setLocation(new Vector3f(10,1,20));

}

@Override

public void simpleUpdate(float tpf) {}

@Override

public void simpleRender(RenderManager rm) {}

}

Размещено на Allbest.ru


Подобные документы

  • Описание разрабатываемого программного обеспечения, его структура и предъявляемые требования, аналитический обзор. Система приоритетов при разработке, проектирование интерфейса, алгоритмов и иерархии классов. Особенности реализации и внедрения системы.

    дипломная работа [878,4 K], добавлен 18.11.2017

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

    курсовая работа [5,5 M], добавлен 12.10.2011

  • Обзор системного и прикладного программного обеспечения используемого в ООО "Игровые системы". Описание компьютерной сети предприятия. Разработка игрового продукта для планшетов Apple iPad. Реализация визуального интерфейса и алгоритма работы модуля.

    отчет по практике [1,4 M], добавлен 18.01.2015

  • Структура Android-приложений. Особенности игрового движка. Алгоритмизация и программирование. Список игровых состояний. Настройка, отладка и тестирование программы. Разработка руководства пользователя. Тестирование инсталляции и отображения элементов.

    дипломная работа [4,5 M], добавлен 19.01.2017

  • Разработка иерархии классов, содержащей не менее трех уровней. Определение базовых и производных классов. Анализ технического задания. Проектирование структуры программы и базовых алгоритмов. Программная реализация разработанной структуры и алгоритмов.

    курсовая работа [34,9 K], добавлен 11.01.2011

  • Анализ технического задания. Разработка интерфейса программы и ее алгоритмов. Кодирование и тестирование разработанного программного обеспечения, оценка его практической эффективности и функциональности. Формирование, содержание руководства пользователя.

    курсовая работа [2,0 M], добавлен 31.07.2012

  • Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.

    курсовая работа [81,7 K], добавлен 18.08.2014

  • Разработка интерфейса и программного обеспечения виртуальной библиотеки. Проектирование структуры экранов и навигационной системы. Построение прототипа пользовательского интерфейса. Тестирование и модификация прототипа. Экспертная оценка разработки.

    курсовая работа [41,2 K], добавлен 19.12.2010

  • Анализ целевой аудитории. Функциональные характеристики пользовательского приложения. Разработка алгоритмов и интерфейса программного продукта, функций рабочей области. Написание скриптов на языке C#. Тестирование программы методом чёрного ящика.

    дипломная работа [1,5 M], добавлен 09.11.2016

  • Описание разрабатываемой программы с точки зрения пользователя и программиста. Поэтапная разработка программной системы. Создание базы данных в Access. Разработка структуры классов. Создание структуры для хранения данных. Проектирование интерфейса.

    курсовая работа [1,4 M], добавлен 07.08.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.