![]() |
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 Nokia. All rights reserved. ** ** This file is part of Qt Jambi. ** ** * Commercial Usage * Licensees holding valid Qt Commercial licenses may use this file in * accordance with the Qt Commercial License Agreement provided with the * Software or, alternatively, in accordance with the terms contained in * a written agreement between you and Nokia. * * * GNU General Public License Usage * Alternatively, this file may be used under the terms of the GNU * General Public License versions 2.0 or 3.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.fsf.org/licensing/licenses/info/GPLv2.html and * http://www.gnu.org/copyleft/gpl.html. In addition, as a special * exception, Nokia gives you certain additional rights. These rights * are described in the Nokia Qt GPL Exception version 1.2, included in * the file GPL_EXCEPTION.txt in this package. * * Qt for Windows(R) Licensees * As a special exception, Nokia, as the sole copyright holder for Qt * Designer, grants users of the Qt/Eclipse Integration plug-in the * right for the Qt/Eclipse Integration to link to functionality * provided by Qt Designer and its related libraries. * * * If you are unsure which license is appropriate for your use, please * contact the sales department at qt-sales@nokia.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 Nokia | Trademarks | Qt Jambi 4.4.3_01 |