diff --git a/demo/Demo1.java b/demo/Demo1.java new file mode 100644 index 0000000..9b76d11 --- /dev/null +++ b/demo/Demo1.java @@ -0,0 +1,89 @@ +import org.frice.game.Game; +import org.frice.game.anim.move.SimpleMove; +import org.frice.game.event.OnClickEvent; +import org.frice.game.obj.FObject; +import org.frice.game.obj.sub.ImageObject; +import org.frice.game.obj.sub.ShapeObject; +import org.frice.game.resource.graphics.ColorResource; +import org.frice.game.resource.image.FileImageResource; +import org.frice.game.utils.graphics.shape.FOval; +import org.frice.game.utils.message.FDialog; +import org.frice.game.utils.time.FTimeListener; +import org.frice.game.utils.time.FTimer; + +import java.util.ArrayList; + +/** + * Demo for the simplest use of Frice Engine + * Created by ice1000 on 2016/8/13. + * + * @author ice1000 + * @since v0.1 + */ +public class Demo1 extends Game { + + private ArrayList objects = new ArrayList<>(); + private FTimer timer; + private int fuck = 0; + private int mode = 0; + private FDialog dialog = new FDialog(this); + + @Override + public void onInit() { + timer = new FTimer(800); + setBack(ColorResource.Companion.getPINK()); + setBounds(100, 100, 800, 800); + setTitle("Fuck Fuck Fuck"); + addObject(new ShapeObject(ColorResource.Companion.getDARK_GRAY(), new FOval(50, 50)) {{ + getAnims().add(new SimpleMove(10, 20)); + }}); + addTimeListener(new FTimeListener(200, () -> { + if (fuck > 500) mode = 1; + if (fuck < 1) mode = 0; + })); + } + + @Override + public void onRefresh() { + if (timer.ended()) { + FObject object; + switch (mode) { + case 1: + object = objects.get(objects.size() - 1); + removeObject(object); + objects.remove(object); + fuck -= 100; + break; + case 0: + fuck += 100; + object = new ImageObject(new FileImageResource("test.png"), fuck, fuck); + addObject(object); + objects.add(object); + break; + } + } + } + + @Override + public void onClick(OnClickEvent onClickEvent) { +// dialog.show("fuck!!!!!!"); + switch (dialog.confirm("Choose")) { + case 0: + dialog.show("Yes!"); + break; + case 1: + dialog.show("No!"); + break; + case 2: + dialog.show("Canceled!"); + break; + default: + dialog.show("???WTF???"); + break; + } + } + + public static void main(String[] args) { + new Demo1(); + } +} diff --git a/demo/Demo10.groovy b/demo/Demo10.groovy new file mode 100644 index 0000000..b25c107 --- /dev/null +++ b/demo/Demo10.groovy @@ -0,0 +1,21 @@ +import org.frice.game.Game +import org.frice.game.obj.button.SimpleButton +import org.frice.game.obj.button.SimpleText +import org.frice.game.utils.graphics.shape.FRectangle + +/** + * Created by ice1000 on 2016/8/18. + * @author ice1000 + * @since v0.3.3 + */ +class Demo10 extends Game { + public static void main(String[] args) { + new Demo10() + } + + @Override + protected void onInit() { + addObject(new SimpleButton(new FRectangle(100, 100), "我是一个按钮", 50, 50, 100, 100)) + addObject(new SimpleText("啊啊啊啊", 40, 300, 300)) + } +} diff --git a/demo/Demo11.java b/demo/Demo11.java new file mode 100644 index 0000000..5c7fc2e --- /dev/null +++ b/demo/Demo11.java @@ -0,0 +1,51 @@ +import org.frice.game.Game; +import org.frice.game.anim.move.SimpleMove; +import org.frice.game.obj.sub.ShapeObject; +import org.frice.game.resource.graphics.ColorResource; +import org.frice.game.utils.graphics.shape.FCircle; +import org.frice.game.utils.time.FTimeListener; + +import java.awt.*; + +/** + * An awesome demo + * + * @author SuperSodaSea + */ +public class Demo11 extends Game { + + private ColorResource colors[]; + private double a = 0; + private double b = 0; + + @Override + public void onInit() { + new Color(0xffffff); + colors = new ColorResource[]{ + ColorResource.Companion.get东条希(), + ColorResource.Companion.get南小鸟(), + ColorResource.Companion.get园田海未(), + ColorResource.Companion.get小泉花阳(), + ColorResource.Companion.get星空凛(), + ColorResource.Companion.get洵濑绘理(), + ColorResource.Companion.get矢泽妮可(), + ColorResource.Companion.get西木野真姬(), + ColorResource.Companion.get高坂穗乃果(), + }; + setSize(1200, 720); + setTitle("IAmSoSquare Demo"); + setBack(ColorResource.Companion.getBLACK()); + addTimeListener(new FTimeListener(1, () -> { + a += 0.0002; + b += a; + addObject(new ShapeObject(colors[(int) (System.currentTimeMillis() / 100 % colors.length)], + new FCircle(2), getWidth() / 2, getHeight() / 2) {{ + getAnims().add(new SimpleMove((int) (Math.sin(b) * 256), (int) (Math.cos(b) * 256))); + }}); + })); + } + + public static void main(String[] args) { + new Demo11(); + } +} diff --git a/demo/Demo2.java b/demo/Demo2.java new file mode 100644 index 0000000..92b0c8c --- /dev/null +++ b/demo/Demo2.java @@ -0,0 +1,58 @@ +import org.frice.game.Game; +import org.frice.game.anim.move.AccelerateMove; +import org.frice.game.anim.move.SimpleMove; +import org.frice.game.obj.sub.ImageObject; +import org.frice.game.resource.image.FileImageResource; +import org.frice.game.utils.time.FTimer; + +/** + * Demo for accelerate (AccelerateMove), this is a simple gravity mode. + *

+ * Created by ice1000 on 2016/8/15. + * + * @author ice1000 + * @since v0.2.1 + */ +public class Demo2 extends Game { + + private FTimer timer; + private ImageObject object1; + private ImageObject object2; + + public static void main(String[] args) { + new Demo2(); + } + + @Override + protected void onInit() { + setSize(800, 800); + object1 = new ImageObject(new FileImageResource("1.png"), 0, 620); + object1.getAnims().add(new AccelerateMove(0, 10)); + object1.getAnims().add(new SimpleMove(0, -600)); + object1.getAnims().add(new SimpleMove(100, 0)); + addObject(object1); + addObject(object2 = make()); + timer = new FTimer(5000); + } + + @Override + protected void onRefresh() { + if (timer.ended()) { + removeObject(object1); + removeObject(object2); + addObject(object1 = make()); + addObject(object2 = make()); + } + } + + private ImageObject make() { + return new ImageObject( +// new WebImageResource("https://avatars3.githubusercontent.com/u/16398479?v=3&s=40" + new FileImageResource("1.png" + ), 20, 720) {{ + getAnims().add(new AccelerateMove(0, 10)); + getAnims().add(new SimpleMove(0, -700)); + getAnims().add(new SimpleMove(280, 0)); + }}; + } +} diff --git a/demo/Demo3.kt b/demo/Demo3.kt new file mode 100644 index 0000000..0e586ea --- /dev/null +++ b/demo/Demo3.kt @@ -0,0 +1,59 @@ +import org.frice.game.Game +import org.frice.game.obj.sub.ImageObject +import org.frice.game.resource.image.FileImageResource +import org.frice.game.utils.message.log.FLog +import org.frice.game.utils.time.FTimer +import java.awt.Rectangle +import java.io.File +import java.util.* + +/** + * Demo for timer + * + * Created by ice1000 on 2016/8/13. + * @author ice1000 + * @since v0.1 + */ +class Demo3 : Game() { + val dickTimer = FTimer(1000) + + var fuck = 0.0 + + val objList = ArrayList() + var mode = 0 + override fun onInit() { + bounds = Rectangle(100, 100, 640, 480) + title = "Demo3 of Frice" +// refreshPerSecond = 100 +// back = ColorResource.BLUE + } + + override fun onRefresh() { + if (dickTimer.ended()) { + val texture = FileImageResource("tres" + File.separator + "display.png") + val obj: ImageObject + if (fuck > 300) mode = 1 else if (fuck < 1) mode = 0 + when (mode) { + 0 -> { + obj = ImageObject(texture, fuck, fuck) + objList.add(obj) + addObject(obj) + fuck += 100 + } + 1 -> { + obj = objList[objList.size - 1] + objList.remove(obj) + removeObject(obj) + fuck -= 100 + } + } + FLog.v("objList.size = ${objList.size}") + } + } + + companion object { + @JvmStatic fun main(args: Array) { + Demo3() + } + } +} diff --git a/demo/Demo4.groovy b/demo/Demo4.groovy new file mode 100644 index 0000000..1e2c8de --- /dev/null +++ b/demo/Demo4.groovy @@ -0,0 +1,73 @@ +import org.frice.game.Game +import org.frice.game.event.OnClickEvent +import org.frice.game.resource.image.FileImageResource +import org.frice.game.resource.image.ImageResource +import org.frice.game.utils.data.Preference +import org.frice.game.utils.message.FDialog +import org.jetbrains.annotations.NotNull +import org.jetbrains.annotations.Nullable + +import java.awt.image.BufferedImage + +/** + * Groovy sample + * + * Demo for database operating + */ +class Demo4 extends Game { + + def fuck = Preference.getPreference("test.xml") + def FDialog dialog + def closed = false + + def image = new FileImageResource("1.png") + + @Override + def void onInit() { + dialog = new FDialog(this) + + /* + * Groovy and Kotlin + */ + setCursor(new ImageResource() { + @Override + BufferedImage getImage() { + return Demo4.this.image.image + } + + @Override + void setImage(@NotNull BufferedImage bufferedImage) { + Demo4.this.image.image = bufferedImage + } + }) + + } + + @Override + def void onRefresh() { + if (!closed) switch (dialog.confirm("what do U want?")) { + case 0: + fuck.insert( + dialog.input("inserting, key?"), + dialog.input("inserting, value?")) + break + case 1: + dialog.confirm(fuck.query( + dialog.input("querying, key?"), + dialog.input("querying, value?")).toString()) + break + case 2: + closed = true + break + } + } + + @Override + def void onClick(@Nullable OnClickEvent e) { + // Do something + } + + def static void main(String[] args) { + new Demo4() + } +} \ No newline at end of file diff --git a/demo/Demo5.rb b/demo/Demo5.rb new file mode 100644 index 0000000..e6ed417 --- /dev/null +++ b/demo/Demo5.rb @@ -0,0 +1,69 @@ +# This demo worked now +require 'java' + +# change the import path in your own one +# don't use this path on your computer +require './FriceEngine.jar' + +java_import org.frice.game.Game +java_import org.frice.game.obj.sub.ShapeObject +java_import org.frice.game.resource.graphics.ColorResource +java_import org.frice.game.utils.graphics.shape.FOval +java_import org.frice.game.utils.time.FTimer +java_import org.frice.game.utils.message.FDialog + + +module JavaAWT + java_import java.awt.Rectangle do |package, name| + 'J' + name + end +end + +module JavaSwing + include JavaAWT +end + +class Demo5 < Game + + def on_init + set_bounds JavaAWT::JRectangle.new 100, 100, 800, 800 + set_title 'JRuby demo by ice1000' + + @click_count = 0 + + @bool = false + + color = ColorResource.new '111111' + @oval = FOval.new 20.0, 15.0 + + @obj = ShapeObject.new color, @oval, 20.0, 20.0 + @timer = FTimer.new 1000 + + # now it's the problem. The object doesn't appear on the game window. + add_object @obj + end + + def on_refresh + if @timer.ended + if @bool + remove_object @obj + @bool = false + else + add_object @obj + @bool = true + end + end + end + + def on_click(e) + FDialog.new(self).show "onClick #{@click_count}" + @click_count += 1 + end + + def on_mouse(e) + end +end + +Demo5.new + +# org.frice.game.Game.new \ No newline at end of file diff --git a/demo/Demo6.java b/demo/Demo6.java new file mode 100644 index 0000000..07994c4 --- /dev/null +++ b/demo/Demo6.java @@ -0,0 +1,39 @@ +import org.frice.game.Game; +import org.frice.game.anim.move.AccelerateMove; +import org.frice.game.anim.move.SimpleMove; +import org.frice.game.anim.scale.SimpleScale; +import org.frice.game.event.OnClickEvent; +import org.frice.game.obj.sub.ShapeObject; +import org.frice.game.resource.graphics.ColorResource; +import org.frice.game.utils.graphics.shape.FOval; +import org.frice.game.utils.message.log.FLog; +import org.frice.game.utils.time.FTimeListener; + +/** + * Created by ice1000 on 2016/8/15. + * + * @author ice1000 + */ +public class Demo6 extends Game { + public static void main(String[] args) { + new Demo6(); + } + + @Override + protected void onInit() { + setSize(900, 900); + addTimeListener(new FTimeListener(2000, () -> addObject(new ShapeObject(ColorResource.Companion.get基佬紫(), + new FOval(80.0, 120.0), 10, 750) {{ + getAnims().add(new SimpleScale(1.1, 1.1)); + getAnims().add(AccelerateMove.getGravity()); + getAnims().add(new SimpleMove(0, -700)); + getAnims().add(new SimpleMove(100, 0)); + }}))); + } + + @Override + protected void onClick(OnClickEvent e) { + setPaused(!getPaused()); + FLog.e("paused"); + } +} diff --git a/demo/Demo7.java b/demo/Demo7.java new file mode 100644 index 0000000..e2d1d64 --- /dev/null +++ b/demo/Demo7.java @@ -0,0 +1,71 @@ +import kotlin.Pair; +import org.frice.game.Game; +import org.frice.game.anim.move.AccelerateMove; +import org.frice.game.anim.move.SimpleMove; +import org.frice.game.obj.collide.OnCollideEvent; +import org.frice.game.obj.sub.ShapeObject; +import org.frice.game.resource.graphics.ColorResource; +import org.frice.game.utils.graphics.shape.FCircle; +import org.frice.game.utils.graphics.shape.FRectangle; +import org.frice.game.utils.message.FDialog; +import org.frice.game.utils.time.FTimer; + +import javax.imageio.ImageIO; +import java.io.File; +import java.io.IOException; +import java.util.Random; + +public class Demo7 extends Game { + public static void main(String[] args) { + new Demo7(); + } + + private Random random = new Random(); + private FTimer timer = new FTimer(3000); + private ShapeObject object; + private OnCollideEvent gameOver; + + @Override + protected void onInit() { + setSize(500, 800); + setTitle("Flappy bird demo by ice1000"); + object = new ShapeObject(ColorResource.get宝强绿(), new FCircle(20.0), 50.0, 200.0); + object.getAnims().add(AccelerateMove.getGravity()); + addObject(object); + gameOver = () -> { + new Thread(() -> { + try { + ImageIO.write(getScreenCut().getImage(), "png", new File("截屏.png")); + } catch (IOException ignored) { + System.out.println("车祸现场"); + } + }).start(); + new FDialog(this).show("Game Over"); + System.exit(0); + }; + listenKeyPressed(e -> { + object.getAnims().clear(); + object.getAnims().add(AccelerateMove.getGravity()); + object.getAnims().add(new SimpleMove(0, -400)); + }); + } + + @Override + protected void onRefresh() { + if (object.getY() > getHeight() + 20) gameOver.handle(); + if (timer.ended()) addObjects(getObj()); + } + + private ShapeObject[] getObj() { + int height = random.nextInt(400); + return new ShapeObject[]{new ShapeObject(ColorResource.get教主黄(), + new FRectangle(50, height), 550.0, 0.0) {{ + getAnims().add(new SimpleMove(-150, 0)); + getTargets().add(new Pair<>(object, gameOver)); + }}, new ShapeObject(ColorResource.get教主黄(), + new FRectangle(50, getHeight() - height - 400), 550.0, height + 400.0) {{ + getAnims().add(new SimpleMove(-150, 0)); + getTargets().add(new Pair<>(object, gameOver)); + }}}; + } +} \ No newline at end of file diff --git a/demo/Demo8.java b/demo/Demo8.java new file mode 100644 index 0000000..728d9e1 --- /dev/null +++ b/demo/Demo8.java @@ -0,0 +1,45 @@ +import org.frice.game.Game; +import org.frice.game.event.OnClickEvent; +import org.frice.game.obj.sub.ImageObject; +import org.frice.game.resource.image.FileImageResource; +import org.frice.game.resource.image.FrameImageResource; +import org.frice.game.utils.audio.AudioManager; +import org.frice.game.utils.audio.AudioPlayer; +import org.jetbrains.annotations.Nullable; + +/** + * Created by ice1000 on 2016/8/16. + * + * @author ice1000 + * @since v0.3.1 + */ +public class Demo8 extends Game { + + private AudioPlayer player; + private int cnt = 0; + + @Override + protected void onInit() { + ImageObject object = new ImageObject(new FrameImageResource(this, new FileImageResource[]{ + new FileImageResource("1.png"), + new FileImageResource("2.png"), + new FileImageResource("3.png"), + new FileImageResource("4.png"), + new FileImageResource("5.png")}, 1000), 100.0, 100.0); + addObject(object); + setCursor(object); + player = AudioManager.getPlayer("1.wav"); + player.start(); +// new Color(0x1BA61C); + } + + @Override + protected void onClick(@Nullable OnClickEvent e) { + cnt++; + if (cnt > 10) player.exit(); + } + + public static void main(String[] args) { + new Demo8(); + } +} diff --git a/demo/Demo9.java b/demo/Demo9.java new file mode 100644 index 0000000..8190d6d --- /dev/null +++ b/demo/Demo9.java @@ -0,0 +1,88 @@ +import kotlin.Pair; +import org.frice.game.Game; +import org.frice.game.anim.move.SimpleMove; +import org.frice.game.obj.effects.ParticleEffect; +import org.frice.game.obj.sub.ImageObject; +import org.frice.game.resource.graphics.ColorResource; +import org.frice.game.resource.graphics.ParticleResource; +import org.frice.game.resource.image.FileImageResource; +import org.frice.game.utils.audio.AudioManager; +import org.frice.game.utils.time.FTimer; + +import javax.imageio.ImageIO; +import java.awt.event.KeyEvent; +import java.io.File; +import java.io.IOException; + +public class Demo9 extends Game { + private int cnt = 0; + + public static void main(String[] args) { + new Demo9(); + } + + private ImageObject boss; + private FTimer timer = new FTimer(600); + + @Override + protected void onInit() { + super.onInit(); + boss = new ImageObject(new FileImageResource("3.png"), 10.0, 20.0); + ImageObject plane = new ImageObject(new FileImageResource("1.png")); + setBounds(100, 100, 500, 500); + addObject(new ParticleEffect(new ParticleResource(this, 500, 500, + ColorResource.getWHITE(), ColorResource.getGREEN()), 0, 0)); + addObject(boss); + addObject(plane); + listenKeyPressed(e -> { + switch (e.getKeyCode()) { + case KeyEvent.VK_SPACE: + ImageObject object = new ImageObject(new FileImageResource("2.png"), plane.getX(), plane.getY()); + object.getAnims().add(new SimpleMove(0, -300)); + object.getTargets().add(new Pair<>(boss, () -> { + AudioManager.play("1.wav"); + removeObject(object); + })); + addObject(object); + break; + case KeyEvent.VK_A: + plane.setX(plane.getX() - 20); + break; + case KeyEvent.VK_D: + plane.setX(plane.getX() + 20); + break; + case KeyEvent.VK_S: + plane.setY(plane.getY() + 20); + break; + case KeyEvent.VK_W: + plane.setY(plane.getY() - 20); + break; + case KeyEvent.VK_C: + new Thread(() -> { + try { + ImageIO.write(getScreenCut().getImage(), "png", new File("截屏" + cnt++ + ".png")); + } catch (IOException ignored) { + System.out.println("车祸现场"); + } + }).start(); + break; + } + }); + } + + @Override + protected void onRefresh() { + if (timer.ended()) { + boss.getAnims().clear(); + boss.getAnims().add(new SimpleMove( + getRandom().nextInt(500) - (int) boss.getX(), + getRandom().nextInt(500) - (int) boss.getY())); + } + } +} + + +// 苟利国家生死以,岂因祸福避趋之! +// 祝长者生日快乐! + + diff --git a/pull.cmd b/pull.cmd new file mode 100644 index 0000000..724e698 --- /dev/null +++ b/pull.cmd @@ -0,0 +1 @@ +git pull origin master \ No newline at end of file diff --git a/push.cmd b/push.cmd new file mode 100644 index 0000000..51d9284 --- /dev/null +++ b/push.cmd @@ -0,0 +1,4 @@ +@echo off +git stage * +git commit * -m "commit via a script" +git push origin master