Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 18.12.2008, 21:20   #1
Geomaster
V.I.P. Programiranje
 
Član od: 28.6.2007.
Lokacija: Beograd
Poruke: 2.342
Zahvalnice: 2.836
Zahvaljeno 1.047 puta na 507 poruka
Slanje poruke preko MSN-a korisniku Geomaster Slanje poruke preko Skypea korisniku Geomaster
Lightbulb Spike2D Engine

Evo ja prebirem po naslagama fajlova u mom kompu i nailazim na jednu davno napuštenu igru rađenu u Java 2 Mobile Edition. To je, zapravo, ova igra, samo što je tada bila zamišljena za mobilne platforme (J2ME).

Unutar igre sam našao jedan engine po imenu Spike2D koji sam ja pisao i razvio ga za potrebe te igre.

Pošto je ovaj mobilni projekat napušten, postovaću kod Spike2D-a (koji je završen ali još mnogo interesantnih stvari može da se doda), zbog toga što je, barem meni izgleda, dobra odskočna daska za početak rada na mobilnim platformama.

Sve mogućnosti engine-a su testirane pomoću primera ali jedino ne znam ponašanje kada je environment veći od veličine ekrana mobilnog uređaja (mada trebalo bi da je OK).

Engine je zamišljen za prikazivanje igara iz ptičje perspektive (nešto kao Fantasy Warrior). Ima mogućnost pravljenja fiksnog environmenta, objekata (tj. Sprite-ova sa animacijom), sposobnost detekcije kolizije i maksimum 200 objekata. Primetio sam neke nedostatke u kodu ali pošto nemam vremena neki forumaš dobre volje bi mogao da malo unapredi ovaj engine. Engine je 100% besplatan, a ako već pravite komercijalnu igru dovoljno je samo Created with Spike2D Engine by Geomaster u credits-ima, ili slično. Engine se može distributirati i nije zaštićen licencom, neko ga čak može prisvojiti za sebe - ako neko to želi, to ide na njegovu dušu Možete i svakoj GameObject klasi dodati proizvoljan broj stringova (nešto kao tagovi).
Ako nekom treba pomoć oko upotrebe, kontaktirajte me da bih malo proučio kako sam napisao engine ali zbog nedostatka vremena ništa ne garantujem.

Sad tek shvatam sa je sample kod za engine negde nestao, verovatno sam ga izbrisao Nadam se da ćete iz source koda uspeti da izvučete kako se engine koristi pošto sam ja zaboravio dosta toga (jul je davno bio ).
Geomaster je offline   Odgovor sa citatom ove poruke
Stara 18.12.2008, 21:21   #2
Geomaster
V.I.P. Programiranje
 
Član od: 28.6.2007.
Lokacija: Beograd
Poruke: 2.342
Zahvalnice: 2.836
Zahvaljeno 1.047 puta na 507 poruka
Slanje poruke preko MSN-a korisniku Geomaster Slanje poruke preko Skypea korisniku Geomaster
Arrow Re: Spike2D Engine

Kod Spike2D.java fajla:
Kod:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Spike2DEngine;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

/**
 *
 * @author DAVID
 */
public class Spike2D {
    GameObject sprites[];
    
    LayerManager layers;
    TiledLayer environment;

    Graphics graphCache;

    
    int cameraX;
    int cameraY;
    
    int viewFieldW;
    int viewFieldH;
    
    int counter;
    
    public Spike2D(Graphics graphicInfo) {
        System.out.println("Dodjosmo mi i do konstruktora ;)");
        
        graphCache = graphicInfo;
        
        System.out.println("Kreaceija Layerman-a!!!");
        layers = new LayerManager();
        
        sprites = new GameObject[200];
        
    }
    
    public void createEnvironment(int cellsX,int cellsY,int imgWidth, int imgHeight, Image tiles) {
        System.out.println("kamenac u zubima");
       
        environment = new TiledLayer(cellsX,cellsY,tiles,imgWidth,imgHeight);
        
        System.out.println("Domestos je unistio kamenac u zubima... ;);)");
        layers.append(environment);
    }
    
    public TiledLayer getEnvironment() {
        return environment;
    }
    
    public void setEnvironment(TiledLayer env) {
        environment=env;
    }
    
    public void quickSetCell(int col, int row, int tileID) {
        environment.setCell(col, row, tileID);
    }
    
    public void setEnvironmentByArray(int[] arr) {
        for (int k=0;k < (environment.getColumns() * environment.getRows());k++) {
            int column = k % environment.getColumns();
            int row = (k - column) / environment.getRows();
            
            System.out.println(arr[k]);
            environment.setCell(column,row,arr[k]);
        }
    }
    
    public void paintAll(int xBegin,int yBegin,int xEnd, int yEnd) {
        int cClipX; int cClipY; int cClipW; int cClipH;
           
        System.out.println("gwahaha...");
        
        cClipX=graphCache.getClipX();
        cClipY=graphCache.getClipY();
        cClipW=graphCache.getClipWidth();
        cClipH=graphCache.getClipHeight();
        
        graphCache.setClip(xBegin, yBegin, xEnd, yEnd);
        layers.paint(graphCache, cameraX - (environment.getWidth()/2), cameraY - (environment.getHeight()/2));
        
        System.out.println("mwahaha");
        
        graphCache.setClip(cClipX,cClipY,cClipW,cClipH);
    }
    
    public void setCameraX(int newX) {
        cameraX=newX;
    }
    
    public void setCameraY(int newY) {
        cameraY=newY;
    }
    
    public int getCameraX() {
        return cameraX;
    }
    
    public int getCameraY() {
        return cameraY;
    }
    
    public GameObject getObjectByID(int sprID) {
        return sprites[sprID];
    }
    
    public void setObject(GameObject newObj, int ID) {
        
        
        sprites[ID] = new GameObject(newObj);
    }
    
    public void appendObject(int objID) {
        layers.insert(sprites[objID].getSprite(),0);
    }
    
    public void remObject(int objID) {
        layers.remove(sprites[objID].getSprite());
    }
    
    
    public Sprite checkForCollision(GameObject gameObj) {
        Sprite collSprite;
        Sprite sprite1;
        
        sprite1=gameObj.getSprite();
        collSprite=null;
        
        for (int i=0;i < (layers.getSize() - 1);i++) {
            if (sprite1.collidesWith((Sprite)layers.getLayerAt(i), true)) {
                collSprite = (Sprite)layers.getLayerAt(i);
            }
            
        }
        
        return collSprite;
    }
    
}
Kod GameObject.java fajla:
Kod:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Spike2DEngine;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;


/**
 *
 * @author DAVID
 */
public class GameObject {
    Sprite mySprite;
    String myStrings[];
    
    public GameObject() {
        
    }
    
    public GameObject(GameObject pbX) {
        mySprite=pbX.getSprite();
        myStrings=pbX.getStringTags();
        
    }
    
   public void setSprite(Sprite newSpr) {
       mySprite=newSpr;
   } 
   
   public Sprite getSprite() {
       return mySprite;
   }
   
   public String getStringTag(int tagID) {
       return myStrings[tagID];
   }
   
   public void setStringTag(int tagID,String newString) {
       myStrings[tagID] = newString;
   }
   
   public String[] getStringTags() {
       return myStrings;
   }
}
Pozdrav svima!!! Postujte komentare o engine-u ovde ili neki example kod ako napišete!
Geomaster je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Direct3D 9 Engine Geomaster Programiranje 21 24.10.2008 17:00
Koji mi engine preporucujete??? PeTkO Pravljenje igara 8 26.7.2007 13:45
2d game engine Damjan Pravljenje igara 48 22.6.2007 11:35
N2D Engine EclipsE Pravljenje igara 4 22.8.2006 23:34


Sva vremena su po Griniču +2 h. Sada je 22:22.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2020, vBulletin Solutions, Inc.
Hosted by Beograd.com