![]() |
Home · Examples |
This is the Java code for the generator example. The the typesystem specification and C++ files are found in the generator_example directory in the directory where Qt Jambi was installed.
/**************************************************************************** ** ** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. ** ** This file is part of Qt Jambi. ** ** ** This file may be used under the terms of the GNU General Public ** License version 2.0 as published by the Free Software Foundation ** and appearing in the file LICENSE.GPL included in the packaging of ** this file. Please review the following information to ensure GNU ** General Public Licensing requirements will be met: ** http://www.trolltech.com/products/qt/opensource.html ** ** If you are unsure which license is appropriate for your use, please ** review the following information: ** http://www.trolltech.com/products/qt/licensing.html or contact the ** sales department at sales@trolltech.com. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ****************************************************************************/ package com.trolltech.examples; import java.util.List; import com.trolltech.examples.generator.AbstractGameObjectInterface; import com.trolltech.examples.generator.Game; import com.trolltech.examples.generator.GameAction; import com.trolltech.examples.generator.GameAnimation; import com.trolltech.examples.generator.GameObject; import com.trolltech.examples.generator.GameScene; import com.trolltech.examples.generator.Point3D; import com.trolltech.qt.core.QPointF; import com.trolltech.qt.core.QRectF; import com.trolltech.qt.gui.QApplication; import com.trolltech.qt.gui.QGraphicsView; import com.trolltech.qt.gui.QIcon; import com.trolltech.qt.gui.QImage; import com.trolltech.qt.gui.QPainterPath; class InventoryAction extends GameAction { @Override public GameAction clone() { return new InventoryAction(); } @Override public boolean perform(GameScene scene) { if (objects().isEmpty()) { List<AbstractGameObjectInterface> inventory = scene.egoInventory(); if (inventory.isEmpty()) { scene.message("Your pockets are empty"); } else { String msg = "You are carrying:\n"; for (AbstractGameObjectInterface gameObject : inventory) { if (gameObject instanceof GameObject) { msg += ((GameObject) gameObject).description() + "\n"; } } scene.message(msg); } return true; } else { return false; } } public InventoryAction() { super(Game.ActionType.resolve(Game.ActionType.UserAction.value())); } } class ChickenObject extends GameObject { public ChickenObject(GameScene scene, String name) { super(scene, name); used.connect(this, "youCantUseTheChicken()"); } private void youCantUseTheChicken() { gameScene().message("You can't use the rubber chicken for anything"); } } @QtJambiExample(name = "Generator Example") public class GeneratorExample extends GameScene { private static final String resourcesLocation = "classpath:com/trolltech/examples/generator/images/"; public GeneratorExample() { int w = 0; int h = 0; // Set up scene { setCacheMode(QGraphicsView.CacheModeFlag.CacheBackground); setDescription("You are standing next to a restaurant and it is sunny outside."); QImage img = new QImage(resourcesLocation + "background.png"); setBackground(img); setHorizon(250.0); w = img.width(); h = img.height(); setSceneRect(new QRectF(0.0, 0.0, w, h)); } // Player avatar setEgoObject(makeEgo(w, h)); // Inventory command grammar().addVerb("inventory", new InventoryAction()); grammar().addVerb("inv", new InventoryAction()); // Make boundary { QPainterPath path = new QPainterPath(new QPointF(0, 305)); path.lineTo(new QPointF(306, 305)); path.lineTo(new QPointF(326, 293)); path.lineTo(new QPointF(357, 293)); path.lineTo(new QPointF(378, 305)); path.lineTo(new QPointF(635, 305)); path.lineTo(new QPointF(635, 200)); path.lineTo(new QPointF(0, 200)); path.closeSubpath(); GameObject boundary = new GameObject(this, "boundary"); boundary.setVisible(false); boundary.setShape(path); boundary.setFlags(Game.ObjectFlag.Blocking); addGameObject(boundary); } // Make chicken { GameObject chicken = new ChickenObject(this, "a rubber chicken with a pulley in the middle"); chicken.setDescription("It's a rubber chicken with a pulley in the middle."); chicken.addName("rubber chicken"); chicken.addName("chicken"); chicken.addName("rubber chicken with a pulley in the middle"); chicken.addName("rubber chicken with pulley"); chicken.addName("rubber chicken with pulley in the middle"); chicken.addName("rubber chicken with pulley in middle"); chicken.addName("chicken with a pulley in the middle"); chicken.addName("chicken with pulley"); chicken.addName("chicken with pulley in the middle"); chicken.addName("chicken with pulley in middle"); chicken.setVisible(true); chicken.setPosition(new Point3D(100.0, 330.0, 0.0)); chicken.setFlags(Game.ObjectFlag.Blocking, Game.ObjectFlag.CanPickUp); GameAnimation a = new GameAnimation(Game.AnimationType.NoAnimation); a.addFrame(new QImage(resourcesLocation + "chicken.png")); chicken.setAnimation(a); addGameObject(chicken); } setWindowIcon(new QIcon("classpath:com/trolltech/images/qt-logo.png")); setWindowTitle(tr("Generator Example")); message("Press any letter to write a command and enter when you are done. Use the arrow keys to move around." +" Hit enter when you are done reading this message."); } private GameAnimation makeAnimation(Game.AnimationType type, String nameTemplate, int startIdx, int endIdx) { GameAnimation a = new GameAnimation(type); a.setSpeed(100); a.setLooping(true); for (int i=startIdx; i<=endIdx; ++i) a.addFrame(new QImage(resourcesLocation + nameTemplate.replace("#", new Integer(i).toString()))); return a; } private GameObject makeEgo(int w, int h) { GameObject ego = new GameObject(this); ego.setPosition(new Point3D(w / 2.0, 350.0, 0.0)); ego.setVisible(true); ego.setAnimation(makeAnimation(Game.AnimationType.WalkingHorizontally, "walk#.png", 1, 4)); ego.setAnimation(makeAnimation(Game.AnimationType.StandingStill, "walk#.png", 2, 2)); ego.setAnimation(makeAnimation(Game.AnimationType.WalkingFromScreen, "walkaway#.png", 1, 2)); ego.setAnimation(makeAnimation(Game.AnimationType.WalkingToScreen, "walktowards#.png", 1, 2)); return ego; } public static void main(String[] args) { QApplication.initialize(args); GeneratorExample ex = new GeneratorExample(); ex.show(); QApplication.exec(); } }
Copyright © 2008 Trolltech | Trademarks | Qt Jambi 4.4.2_01 |