mirror of
https://github.com/fazo96/AIrium.git
synced 2025-01-09 09:29:53 +01:00
first commit
This commit is contained in:
commit
7c99c1075e
64
.gitignore
vendored
Normal file
64
.gitignore
vendored
Normal file
@ -0,0 +1,64 @@
|
||||
## Java
|
||||
|
||||
*.class
|
||||
*.war
|
||||
*.ear
|
||||
hs_err_pid*
|
||||
|
||||
## GWT
|
||||
war/
|
||||
html/war/gwt_bree/
|
||||
html/gwt-unitCache/
|
||||
.apt_generated/
|
||||
html/war/WEB-INF/deploy/
|
||||
html/war/WEB-INF/classes/
|
||||
.gwt/
|
||||
gwt-unitCache/
|
||||
www-test/
|
||||
.gwt-tmp/
|
||||
|
||||
## Android Studio and Intellij and Android in general
|
||||
android/libs/armeabi/
|
||||
android/libs/armeabi-v7a/
|
||||
android/libs/x86/
|
||||
android/gen/
|
||||
.idea/
|
||||
*.ipr
|
||||
*.iws
|
||||
*.iml
|
||||
out/
|
||||
com_crashlytics_export_strings.xml
|
||||
|
||||
## Eclipse
|
||||
.classpath
|
||||
.project
|
||||
.metadata
|
||||
**/bin/
|
||||
tmp/
|
||||
*.tmp
|
||||
*.bak
|
||||
*.swp
|
||||
*~.nib
|
||||
local.properties
|
||||
.settings/
|
||||
.loadpath
|
||||
.externalToolBuilders/
|
||||
*.launch
|
||||
|
||||
## NetBeans
|
||||
**/nbproject/private/
|
||||
build/
|
||||
nbbuild/
|
||||
dist/
|
||||
nbdist/
|
||||
nbactions.xml
|
||||
nb-configuration.xml
|
||||
|
||||
## Gradle
|
||||
|
||||
.gradle
|
||||
gradle-app.setting
|
||||
build/
|
||||
|
||||
## OS Specific
|
||||
.DS_Store
|
4
.nb-gradle-properties
Normal file
4
.nb-gradle-properties
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<gradle-project-properties>
|
||||
<!--DO NOT EDIT THIS FILE! - Used by the Gradle plugin of NetBeans.-->
|
||||
</gradle-project-properties>
|
BIN
.nb-gradle/private/cache/AIrium-d41d8cd98f00b204e9800998ecf8427e
vendored
Normal file
BIN
.nb-gradle/private/cache/AIrium-d41d8cd98f00b204e9800998ecf8427e
vendored
Normal file
Binary file not shown.
BIN
.nb-gradle/private/cache/core-ae20cee98ae962b39919c99c9fa7e1c8
vendored
Normal file
BIN
.nb-gradle/private/cache/core-ae20cee98ae962b39919c99c9fa7e1c8
vendored
Normal file
Binary file not shown.
BIN
.nb-gradle/private/cache/desktop-e1fc414efb00462ad25041a21e45e696
vendored
Normal file
BIN
.nb-gradle/private/cache/desktop-e1fc414efb00462ad25041a21e45e696
vendored
Normal file
Binary file not shown.
14
.nb-gradle/profiles/private/aux-config
Normal file
14
.nb-gradle/profiles/private/aux-config
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<gradle-project-properties>
|
||||
<!--DO NOT EDIT THIS FILE! - Used by the Gradle plugin of NetBeans.-->
|
||||
<auxiliary>
|
||||
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
|
||||
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
|
||||
<group/>
|
||||
</open-files>
|
||||
<editor-bookmarks lastBookmarkId="0" xmlns="http://www.netbeans.org/ns/editor-bookmarks/2"/>
|
||||
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
|
||||
<group/>
|
||||
</open-files>
|
||||
</auxiliary>
|
||||
</gradle-project-properties>
|
55
build.gradle
Normal file
55
build.gradle
Normal file
@ -0,0 +1,55 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||
}
|
||||
dependencies {
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
apply plugin: "eclipse"
|
||||
apply plugin: "idea"
|
||||
|
||||
version = '1.0'
|
||||
ext {
|
||||
appName = 'ai'
|
||||
gdxVersion = '1.6.3'
|
||||
roboVMVersion = '1.4.0'
|
||||
box2DLightsVersion = '1.3'
|
||||
ashleyVersion = '1.4.0'
|
||||
aiVersion = '1.5.0'
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||
maven { url "https://oss.sonatype.org/content/repositories/releases/" }
|
||||
}
|
||||
}
|
||||
|
||||
project(":desktop") {
|
||||
apply plugin: "java"
|
||||
|
||||
|
||||
dependencies {
|
||||
compile project(":core")
|
||||
compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
|
||||
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
|
||||
compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
|
||||
}
|
||||
}
|
||||
|
||||
project(":core") {
|
||||
apply plugin: "java"
|
||||
|
||||
|
||||
dependencies {
|
||||
compile "com.badlogicgames.gdx:gdx:$gdxVersion"
|
||||
compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
|
||||
}
|
||||
}
|
||||
|
||||
tasks.eclipse.doLast {
|
||||
delete ".project"
|
||||
}
|
BIN
core/assets/badlogic.jpg
Normal file
BIN
core/assets/badlogic.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 67 KiB |
11
core/build.gradle
Normal file
11
core/build.gradle
Normal file
@ -0,0 +1,11 @@
|
||||
apply plugin: "java"
|
||||
|
||||
sourceCompatibility = 1.6
|
||||
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
|
||||
|
||||
sourceSets.main.java.srcDirs = [ "src/" ]
|
||||
|
||||
|
||||
eclipse.project {
|
||||
name = appName + "-core"
|
||||
}
|
59
core/src/com/mygdx/game/Game.java
Normal file
59
core/src/com/mygdx/game/Game.java
Normal file
@ -0,0 +1,59 @@
|
||||
package com.mygdx.game;
|
||||
|
||||
import com.badlogic.gdx.ApplicationAdapter;
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.Input;
|
||||
import com.badlogic.gdx.graphics.GL20;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
|
||||
import logic.Element;
|
||||
import logic.World;
|
||||
|
||||
public class Game extends ApplicationAdapter {
|
||||
|
||||
private static Game game;
|
||||
SpriteBatch batch;
|
||||
ShapeRenderer shaper;
|
||||
Texture img;
|
||||
private World world;
|
||||
|
||||
@Override
|
||||
public void create() {
|
||||
game = this;
|
||||
batch = new SpriteBatch();
|
||||
img = new Texture("badlogic.jpg");
|
||||
world = new World(640, 480);
|
||||
shaper = new ShapeRenderer();
|
||||
//shaper.setAutoShapeType(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render() {
|
||||
// Input
|
||||
if(Gdx.input.isKeyJustPressed(Input.Keys.SPACE)){
|
||||
world.getElements().clear();
|
||||
}
|
||||
// Update
|
||||
world.update();
|
||||
// Draw
|
||||
Gdx.gl.glClearColor(0, 0, 0, 1);
|
||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
|
||||
/*batch.begin();
|
||||
batch.draw(img, 0, 0);
|
||||
batch.end();*/
|
||||
shaper.setColor(1, 1, 1, 1);
|
||||
shaper.begin(ShapeRenderer.ShapeType.Line);
|
||||
//shaper.circle(640, 480, 100);
|
||||
for(Element e: world.getElements()) e.render(shaper);
|
||||
shaper.end();
|
||||
}
|
||||
|
||||
public World getWorld() {
|
||||
return world;
|
||||
}
|
||||
|
||||
public static Game get() {
|
||||
return game;
|
||||
}
|
||||
}
|
132
core/src/logic/Creature.java
Normal file
132
core/src/logic/Creature.java
Normal file
@ -0,0 +1,132 @@
|
||||
package logic;
|
||||
|
||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
|
||||
import com.mygdx.game.Game;
|
||||
|
||||
/**
|
||||
* A (hopefully) smart biological creature.
|
||||
*
|
||||
* @author fazo
|
||||
*/
|
||||
public class Creature extends Element {
|
||||
|
||||
public static final int default_radius = 20;
|
||||
|
||||
private float dir, speed, accel, sightRange, fov, fitness, rotSpeed;
|
||||
private float hp;
|
||||
private Sight sight;
|
||||
|
||||
public Creature(float x, float y) {
|
||||
super(x, y, default_radius);
|
||||
dir = (float) (Math.random() * 2 * Math.PI);
|
||||
hp = 100;
|
||||
speed = (float) Math.random() * 3;
|
||||
rotSpeed = (float) Math.random() - 0.5f;
|
||||
accel = 0f;
|
||||
sightRange = 40;
|
||||
fov = (float) Math.PI / 2;
|
||||
fitness = 100;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
// apply hunger
|
||||
hp -= 0.1f;
|
||||
if (hp < 0) {
|
||||
Game.get().getWorld().getGraveyard().add(this);
|
||||
}
|
||||
speed += accel; // apply acceleration
|
||||
if (speed > 0) {
|
||||
speed -= 0.001; // attrito
|
||||
}
|
||||
if (speed < 0) {
|
||||
speed = 0;
|
||||
}
|
||||
// apply speed
|
||||
float xMul = (float) Math.cos(dir), yMul = (float) Math.sin(dir);
|
||||
move(xMul * speed, yMul * speed);
|
||||
dir += rotSpeed;
|
||||
// try eating
|
||||
eat();
|
||||
fitness -= 0.1;
|
||||
if (dir > 2 * Math.PI) {
|
||||
dir -= 2 * Math.PI;
|
||||
}
|
||||
sight = look();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(ShapeRenderer s) {
|
||||
// Body
|
||||
s.setColor(1 - (hp / 100), hp / 100, 0, 1);
|
||||
s.circle(getX(), getY(), getSize());
|
||||
// Eye
|
||||
double relX = Math.cos(dir) * getSize(), relY = Math.sin(dir) * getSize();
|
||||
if (sight != null) {
|
||||
float c = sight.getDistance() / sightRange;
|
||||
if (sight.getElement() instanceof Creature) {
|
||||
s.setColor(c, 0, 0, 1);
|
||||
} else if (sight.getElement() instanceof Vegetable) {
|
||||
s.setColor(0, c, 0, 1);
|
||||
} else {
|
||||
s.setColor(1, 1, 1, 1);
|
||||
}
|
||||
}
|
||||
s.circle((float) relX + getX(), (float) relY + getY(), 3);
|
||||
//FOV
|
||||
float degrees = fov * 180f / (float) Math.PI;
|
||||
float orient = dir * 180f / (float) Math.PI - degrees / 2;
|
||||
s.setColor(0.3f, 0.3f, 0.3f, 1);
|
||||
s.arc((float) relX + getX(), (float) relY + getY(), sightRange, orient, degrees);
|
||||
}
|
||||
|
||||
public Sight look() {
|
||||
Element seen = null;
|
||||
float dist = 0, angle = 0, ndir = dir - (float) Math.PI;
|
||||
for (Element e : Game.get().getWorld().getElements()) {
|
||||
if (e == this) {
|
||||
continue;
|
||||
}
|
||||
float tempDist = distanceFrom(e);
|
||||
if (tempDist > sightRange) {
|
||||
continue;
|
||||
}
|
||||
//System.out.println("TempDist "+tempDist+" SightRange "+sightRange);
|
||||
if (tempDist > dist && seen != null) {
|
||||
continue;
|
||||
}
|
||||
float relAngle = (float) (Math.atan2(getY() - e.getY(), getX() - e.getX()));
|
||||
//if((relAngle > dir-fov/2 && relAngle < dir+fov/2)){
|
||||
if (Math.abs(relAngle - ndir) < fov) {
|
||||
// Visible
|
||||
seen = e;
|
||||
angle = relAngle - ndir;
|
||||
dist = tempDist;
|
||||
}
|
||||
//System.out.println("RelAngle "+relAngle+" Dir "+ndir);
|
||||
}
|
||||
if (seen != null) {
|
||||
return new Sight(seen, dist, angle);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public void eat() {
|
||||
for (Element e : Game.get().getWorld().getElements()) {
|
||||
if (e instanceof Vegetable && overlaps(e)) {
|
||||
e.setSize(e.getSize() - 0.1f);
|
||||
hp += 0.1f;
|
||||
fitness++;
|
||||
if (hp > 100) {
|
||||
hp = 100;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setDirection(float dir) {
|
||||
this.dir = dir;
|
||||
}
|
||||
|
||||
}
|
73
core/src/logic/Element.java
Normal file
73
core/src/logic/Element.java
Normal file
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package logic;
|
||||
|
||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fazo
|
||||
*/
|
||||
public abstract class Element {
|
||||
|
||||
private float x, y, size;
|
||||
|
||||
public Element(float x, float y, float size) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
public float distanceFrom(Element e) {
|
||||
return (float) Math.sqrt(Math.pow(e.x - x, 2) + Math.pow(e.y - y, 2)) - getSize() - e.getSize();
|
||||
}
|
||||
|
||||
public boolean overlaps(Element e) {
|
||||
return distanceFrom(e) < 0;
|
||||
}
|
||||
|
||||
public boolean overlaps(float x, float y, float radius) {
|
||||
return (float) Math.sqrt(Math.pow(x - this.x, 2) + Math.pow(y - this.y, 2)) < getSize() + radius;
|
||||
}
|
||||
|
||||
public boolean overlaps(float x, float y) {
|
||||
return overlaps(x, y, 1);
|
||||
}
|
||||
|
||||
public void move(float deltaX, float deltaY) {
|
||||
x += deltaX;
|
||||
y += deltaY;
|
||||
}
|
||||
|
||||
public abstract void update();
|
||||
|
||||
public abstract void render(ShapeRenderer s);
|
||||
|
||||
public float getX() {
|
||||
return x;
|
||||
}
|
||||
|
||||
public float getY() {
|
||||
return y;
|
||||
}
|
||||
|
||||
public float getSize() {
|
||||
return size;
|
||||
}
|
||||
|
||||
public void setX(float x) {
|
||||
this.x = x;
|
||||
}
|
||||
|
||||
public void setY(float y) {
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
public void setSize(float size) {
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
}
|
34
core/src/logic/Sight.java
Normal file
34
core/src/logic/Sight.java
Normal file
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package logic;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fazo
|
||||
*/
|
||||
public class Sight {
|
||||
private Element seen;
|
||||
private float distance, angle;
|
||||
|
||||
public Sight(Element seen, float distance, float angle) {
|
||||
this.seen = seen;
|
||||
this.distance = distance;
|
||||
this.angle = angle;
|
||||
}
|
||||
|
||||
public Element getElement() {
|
||||
return seen;
|
||||
}
|
||||
|
||||
public float getDistance() {
|
||||
return distance;
|
||||
}
|
||||
|
||||
public float getAngle() {
|
||||
return angle;
|
||||
}
|
||||
|
||||
}
|
33
core/src/logic/Vegetable.java
Normal file
33
core/src/logic/Vegetable.java
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package logic;
|
||||
|
||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fazo
|
||||
*/
|
||||
public class Vegetable extends Element {
|
||||
|
||||
public static final int default_radius = 5;
|
||||
private float x, y;
|
||||
|
||||
public Vegetable(float x, float y) {
|
||||
super(x, y, default_radius);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(ShapeRenderer s) {
|
||||
s.setColor(1, 1, 1, 1);
|
||||
s.circle(getX(), getY(), getSize());
|
||||
}
|
||||
}
|
94
core/src/logic/World.java
Normal file
94
core/src/logic/World.java
Normal file
@ -0,0 +1,94 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package logic;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fazo
|
||||
*/
|
||||
public class World {
|
||||
|
||||
private int width, height;
|
||||
public ArrayList<Element> elements;
|
||||
public ArrayList<Element> graveyard;
|
||||
|
||||
public World(int width, int height) {
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
elements = new ArrayList();
|
||||
graveyard = new ArrayList();
|
||||
}
|
||||
|
||||
public void update() {
|
||||
while (elements.size() < 20) {
|
||||
if (Math.random() < 0.2) {
|
||||
spawnCreature();
|
||||
} else {
|
||||
spawnVegetable();
|
||||
}
|
||||
/*Creature c = new Creature(300,400);
|
||||
elements.add(c);
|
||||
elements.add(new Vegetable(300,450));*/
|
||||
}
|
||||
elements.removeAll(graveyard);
|
||||
graveyard.clear();
|
||||
for(Element e: elements) e.update();
|
||||
}
|
||||
|
||||
private void spawn(boolean isCreature) {
|
||||
int x, y, r;
|
||||
boolean overlaps = false;
|
||||
if (isCreature) {
|
||||
r = Creature.default_radius;
|
||||
} else {
|
||||
r = Vegetable.default_radius;
|
||||
}
|
||||
do {
|
||||
overlaps = false;
|
||||
x = (int) (Math.random() * width);
|
||||
y = (int) (Math.random() * height);
|
||||
for (Element e : elements) {
|
||||
if (e.overlaps(x, y, r)) {
|
||||
overlaps = true;
|
||||
}
|
||||
}
|
||||
} while (overlaps);
|
||||
if (isCreature) {
|
||||
System.out.println("New Creat: " + x + " " + y);
|
||||
elements.add(new Creature(x, y));
|
||||
} else {
|
||||
System.out.println("New Veg: " + x + " " + y);
|
||||
elements.add(new Vegetable(x, y));
|
||||
}
|
||||
}
|
||||
|
||||
private void spawnVegetable() {
|
||||
spawn(false);
|
||||
}
|
||||
|
||||
private void spawnCreature() {
|
||||
spawn(true);
|
||||
}
|
||||
|
||||
public int getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
||||
public int getHeight() {
|
||||
return height;
|
||||
}
|
||||
|
||||
public ArrayList<Element> getElements() {
|
||||
return elements;
|
||||
}
|
||||
|
||||
public ArrayList<Element> getGraveyard() {
|
||||
return graveyard;
|
||||
}
|
||||
|
||||
}
|
9
core/src/logic/neural/Brain.java
Normal file
9
core/src/logic/neural/Brain.java
Normal file
@ -0,0 +1,9 @@
|
||||
package logic.neural;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fazo
|
||||
*/
|
||||
public class Brain {
|
||||
|
||||
}
|
22
core/src/logic/neural/Connection.java
Normal file
22
core/src/logic/neural/Connection.java
Normal file
@ -0,0 +1,22 @@
|
||||
package logic.neural;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fazo
|
||||
*/
|
||||
public class Connection {
|
||||
private float weight;
|
||||
|
||||
public Connection(float weight) {
|
||||
this.weight = weight;
|
||||
}
|
||||
|
||||
public float getWeight() {
|
||||
return weight;
|
||||
}
|
||||
|
||||
public void setWeight(float weight) {
|
||||
this.weight = weight;
|
||||
}
|
||||
|
||||
}
|
16
core/src/logic/neural/Neuron.java
Normal file
16
core/src/logic/neural/Neuron.java
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package logic.neural;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fazo
|
||||
*/
|
||||
public class Neuron {
|
||||
private ArrayList<Connection> inputs, outputs;
|
||||
}
|
46
desktop/build.gradle
Normal file
46
desktop/build.gradle
Normal file
@ -0,0 +1,46 @@
|
||||
apply plugin: "java"
|
||||
|
||||
sourceCompatibility = 1.6
|
||||
sourceSets.main.java.srcDirs = [ "src/" ]
|
||||
|
||||
project.ext.mainClassName = "com.mygdx.game.desktop.DesktopLauncher"
|
||||
project.ext.assetsDir = new File("../core/assets");
|
||||
|
||||
task run(dependsOn: classes, type: JavaExec) {
|
||||
main = project.mainClassName
|
||||
classpath = sourceSets.main.runtimeClasspath
|
||||
standardInput = System.in
|
||||
workingDir = project.assetsDir
|
||||
ignoreExitValue = true
|
||||
}
|
||||
|
||||
task dist(type: Jar) {
|
||||
from files(sourceSets.main.output.classesDir)
|
||||
from files(sourceSets.main.output.resourcesDir)
|
||||
from {configurations.compile.collect {zipTree(it)}}
|
||||
from files(project.assetsDir);
|
||||
|
||||
manifest {
|
||||
attributes 'Main-Class': project.mainClassName
|
||||
}
|
||||
}
|
||||
|
||||
dist.dependsOn classes
|
||||
|
||||
eclipse {
|
||||
project {
|
||||
name = appName + "-desktop"
|
||||
linkedResource name: 'assets', type: '2', location: 'PARENT-1-PROJECT_LOC/core/assets'
|
||||
}
|
||||
}
|
||||
|
||||
task afterEclipseImport(description: "Post processing after project generation", group: "IDE") {
|
||||
doLast {
|
||||
def classpath = new XmlParser().parse(file(".classpath"))
|
||||
new Node(classpath, "classpathentry", [ kind: 'src', path: 'assets' ]);
|
||||
def writer = new FileWriter(file(".classpath"))
|
||||
def printer = new XmlNodePrinter(new PrintWriter(writer))
|
||||
printer.setPreserveWhitespace(true)
|
||||
printer.print(classpath)
|
||||
}
|
||||
}
|
12
desktop/src/com/mygdx/game/desktop/DesktopLauncher.java
Normal file
12
desktop/src/com/mygdx/game/desktop/DesktopLauncher.java
Normal file
@ -0,0 +1,12 @@
|
||||
package com.mygdx.game.desktop;
|
||||
|
||||
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
|
||||
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
|
||||
import com.mygdx.game.Game;
|
||||
|
||||
public class DesktopLauncher {
|
||||
public static void main (String[] arg) {
|
||||
LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
|
||||
new LwjglApplication(new Game(), config);
|
||||
}
|
||||
}
|
3
gradle.properties
Normal file
3
gradle.properties
Normal file
@ -0,0 +1,3 @@
|
||||
org.gradle.daemon=true
|
||||
org.gradle.jvmargs=-Xms128m -Xmx512m
|
||||
org.gradle.configureondemand=true
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
Binary file not shown.
6
gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
6
gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
#Sat Sep 21 13:08:26 CEST 2013
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=http\://services.gradle.org/distributions/gradle-2.4-all.zip
|
164
gradlew
vendored
Executable file
164
gradlew
vendored
Executable file
@ -0,0 +1,164 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn ( ) {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die ( ) {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
esac
|
||||
|
||||
# For Cygwin, ensure paths are in UNIX format before anything is touched.
|
||||
if $cygwin ; then
|
||||
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
||||
fi
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >&-
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >&-
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
||||
function splitJvmOpts() {
|
||||
JVM_OPTS=("$@")
|
||||
}
|
||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
||||
|
||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
90
gradlew.bat
vendored
Normal file
90
gradlew.bat
vendored
Normal file
@ -0,0 +1,90 @@
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@rem
|
||||
@rem ##########################################################################
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windowz variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
goto execute
|
||||
|
||||
:4NT_args
|
||||
@rem Get arguments from the 4NT Shell from JP Software
|
||||
set CMD_LINE_ARGS=%$
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
1
settings.gradle
Normal file
1
settings.gradle
Normal file
@ -0,0 +1 @@
|
||||
include 'desktop', 'core'
|
Loading…
Reference in New Issue
Block a user