Page 5 of 5

Re: Java.

Posted: Fri Mar 30, 2012 4:37 pm
by Feuer
Ettet hakisi Main-Class - määritystä etkä classpathia? Paikallistin, että javan asennusohjelma on tehnyt tiedostokytkennät huonosti. .jarin tuplaklikkaus tuottaa errorin, mutta konsolissa "java -jar MERPG.jar" avaa ohjelman kiltisti.

Code: Select all

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.7.0-b147 (Oracle Corporation)
Class-Path: lib/MEMAP-luokkakirjasto.jar
X-COMMENT: Main-Class will be added automatically by build
Main-Class: merpg.MERPG
missä merpg.MERPG on käynnistysluokan nimi.

Re: Java.

Posted: Mon Apr 09, 2012 12:34 am
by Sami The Great
Hyvät CoolBasic:n käyttäjät! Saatte etuoikeuden tarkastella uusinta tuotostani ensimmäisenä. Tai ainakin nähdä mitä on saatu aikaan, koska pelaamaan ette vielä pääse :D Eli projekti, jota olen javalla tehnyt alkaa saavuttamaan beta astetta piakkoin ja ajattelin julkaista pienen trailerin nykyisestä ALPHA-versiosta. Peli on siis vanha tuttu Vindicator, jonka olen joskus coolbasic:lla tehnyt, mutta nyt olen tehnyt javalla siitä uutta versiota, joka toimii myös Android alustalla. Lisäksi pelissä on nyt kasapäin lisää kivoja ominaisuuksia ja graafisia efektejä, jotka tekevät pelaamisesta mielenkiintoisempaa kuin aiemmassa CB versiossa. Valmis tuotos on tulossa myös android markettiin, josta sen voi sitten ladata puhelimeen helposti :) Peliin pitää vielä lisätä muutamia ominaisuuksia ennen BETA-vaihetta sekä saada jostain äänet (nykyiset äänet on jostain netistä ladattu testaamisen merkeissä). Lisäksi musiikin kanssa on vielä vähän auki, että voinko käyttää niitä, kunhan saan vain tekijän kiinni, jotta hän voisi antaa luvan/ei antaa lupaa :D Pitemmittä puheitta linkki youtubeen: http://www.youtube.com/watch?v=CYOXhPzwY74

Myös jotain kommentteja olisi kiva saada, vaikka itse pelaamisesta ei voi mitään kokemuksia vielä sanoakkaan.

Re: Java.

Posted: Mon Apr 09, 2012 1:07 am
by Sly_Jack0
Oikein hyvältä näyttää. Graafinen ilme on yhtenäinen ja tyylikäs. Ainoa mikä jäi vähän häiritsemään oli pelin hitaus. Onko peli todella noin hidastempoinen koko ajan vai nopeutuuko se? Kenties vaikeampia vaikeustasoja, jotka ovat sitten nopeampia?

Re: Java.

Posted: Mon Apr 09, 2012 1:18 am
by Sami The Great
Sly_Jack0 wrote:Oikein hyvältä näyttää. Graafinen ilme on yhtenäinen ja tyylikäs. Ainoa mikä jäi vähän häiritsemään oli pelin hitaus. Onko peli todella noin hidastempoinen koko ajan vai nopeutuuko se? Kenties vaikeampia vaikeustasoja, jotka ovat sitten nopeampia?
Vaikeustaso kasvaa koko ajan pelin edetessä, mutta itse pelin nopeus ei muutu. Tietenkin siihenkin voisi kokeilla vaikuttaa. Nyt vihollisten määrä kasvaa, kunnes saavutetaan maksimi piste, jolloin niitä ei tule lisää, vaan niiden tekemä vahinko kasvaa, ja jossakin vaiheessa jo yksikin osuma voi viedä puolet aluksen kestosta, jos aluksen kilpi ei ole päällä. Laitan jossakin vaiheessa beta version jakoon, jonka tarkoituksena on kartottaa juurikin vaikeustasoa ja pelinopeutta jne.

Re: Java.

Posted: Thu May 31, 2012 9:13 pm
by Sami The Great
Niin kuin osa ehkä jo on lukenut, niin olen aloittanut uuden projektin javalla. Tarkoitus olisi tehdä yksinkertainen ja helpohko peli, jossa ohjataan kääpiötä ja hänen kaivosvaunua keräillen erilaisia mineraaleja. Ratakiskot eivät kuitenkaan ole maailman turvallisimmat, joten siksi kääpiön on pitänyt rakentaa omaan vaunuunsa hyppyjousi, liitoraketit, sekä supermoottori, jolla pystyy menemään pienimmistä esteistä läpi. Liitoraketteja en ole vielä lisännyt, mutta eiköhän ne jossain vaiheessa tule tehtyä. Niiden tarkoitus on, että vaunulla pystyy myös hyppimään ilmassa, mutta rajoitetusti (rakettja pitää välillä ladata).

Tänään olen saanut aikaiseksi fysiikkakirjaston linkittämisen pelimoottoriin ja sen pohjalta piirretään grafiikka. Useiden testien jälkeen pelimoottorin _pitäisi_ toimia nyt resoluutiosta riippumatta. Tein systeemin, jolla pystyy suht tehokkaasti piirtelemään isojakin kuvia (3000*1024) puhelimessa. Systeemi perustuu siihen, että kuvat leikellään osiksi ja ainoastaan näkyvät osat syötetään näytönohjaimen muistiin. Kuvia kuitenkin pystyy käsittelemään samalla tavalla, kuin se olisi yksi iso kuva. Lisäksi karttakuvat piirtyy SpriteCachen kautta, joten ne pitää vain kerran piirtää ja sitten ne eivät enää vie juuri ollenkaan suoritustehoja. Ainakin systeemi pyörii hyvin täysillä FPS:llä omassa puhelimessani :) EDIT: Yksi huono puoli on, että cache ei tue reunapehmennystä, joten kartan osaset voivat jäädä vähän suttuisiksi :(

Kuva nykyisestä tekniikkademosta. Taustat ja muut hienoudet tulevat myöhemmin :D
Image

Re: Java.

Posted: Fri Jun 08, 2012 2:19 pm
by Feuer
PHP:n Hash() ja Javan MessageDigest - luokka palauttavat ihan erilaisia tuloksia samalla syötteellä. Onko kellään tietoa tavasta tuottaa Javassa samanlaisia SHA512 - tiivisteitä kuin PHP:n Hash()?

Re: Java.

Posted: Fri Jun 08, 2012 6:34 pm
by naputtelija
Feuer wrote:PHP:n Hash() ja Javan MessageDigest - luokka palauttavat ihan erilaisia tuloksia samalla syötteellä. Onko kellään tietoa tavasta tuottaa Javassa samanlaisia SHA512 - tiivisteitä kuin PHP:n Hash()?
oletko tarkistanut, jos käytät eri merkkisettejä PHP:ssä ja javassa? Esim. Utf-8 javassa ja ASCII PHP:ssä. Tai sitten käsittelevätkö nuo funktiot ulostulevaa merkkijonoa eri merkkiseteillä? Viimeiseksi, miksi edes tarvitsisit kyseistä ominaisuutta?
joo tiedän ettei niitä kutsuta "merkkiseteiksi" siitä onkin sitten turha jaastaa.

Re: Java.

Posted: Fri Jun 08, 2012 9:51 pm
by Feuer
naputtelija wrote: oletko tarkistanut, jos käytät eri merkkisettejä PHP:ssä ja javassa? Esim. Utf-8 javassa ja ASCII PHP:ssä.
Näin pitkälle pääsin omassa guuglettelussani, kunnes tuli aika siirtyä muiden projektien pariin. PHP:n ominaisuuksiin kuului muistaakseni melko heikko unicode-tuki.
naputtelija wrote: Viimeiseksi, miksi edes tarvitsisit kyseistä ominaisuutta?
Pitäisi autentikoida PHP-softalla luodun käyttäjätaulun pohjalta käyttäjiä samalla serverillä pyörivällä java-softalla.
EDIT:

Jälkipolville tiedoksi, Javan charset on (ainakin täällä) UTF-16, siinä missä PHP:llä se on mitä sattuu olemaan. Seuraava Javakoodi tuottaa saman tuloksen kuin Hash("SH512", $message, false):

Code: Select all

    public static String SHA512(String message) throws NoSuchAlgorithmException, UnsupportedEncodingException
    {
        message = new String(message.getBytes("UTF-8"));
        MessageDigest md = MessageDigest.getInstance("SHA-512");
        md.update(message.getBytes());
        return getHex(md.digest()).toLowerCase();
    }
    static final String HEXES = "0123456789ABCDEF";
    
    public static String getHex( byte [] raw ) 
    {
        if ( raw == null ) {
        return null;
        }
        final StringBuilder hex = new StringBuilder( 2 * raw.length );
        for ( final byte b : raw ) {
        hex.append(HEXES.charAt((b & 0xF0) >> 4))
            .append(HEXES.charAt((b & 0x0F)));
        }
        return hex.toString();
    }
[/edit]

Re: Java.

Posted: Fri Jun 08, 2012 11:06 pm
by Pettis
Feuer wrote:PHP:n Hash() ja Javan MessageDigest - luokka palauttavat ihan erilaisia tuloksia samalla syötteellä. Onko kellään tietoa tavasta tuottaa Javassa samanlaisia SHA512 - tiivisteitä kuin PHP:n Hash()?
MessageDigest ei anna tulosta heksoina.

Googlailin ja naputtelin jotain joka näyttäisi antavan saman tulosteen. En tosin mene takuuseen että toimii 100% tapauksissa. Jossain mainittiin, että hashi saattaa joissain tapauksissa olla esim. merkin liian lyhyt.

Code: Select all

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


public class testi {

	public static void main(String[] args) 
	{
		String asd = "salasana";
		
		MessageDigest md = null;
		
		try {
			md = MessageDigest.getInstance("SHA-512");
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		
		byte[] digest = md.digest( asd.getBytes());
		BigInteger hash = new BigInteger(1, digest);
		String hashword = hash.toString(16);
		
		System.out.println(hashword);
	}

}
Tämä tulostaa:

Code: Select all

e8e646b38387254e1f677d4df3ca290b03318440b87f4d45d67fe7b7c76a6316cf616fb155a61bb489c8eae829b837ae460421c31c450bddc02daee1ee3d609
Ja PHP-pätkä:

Code: Select all

echo hash("sha512", "salasana");
Tulostaa tämän:

Code: Select all

0e8e646b38387254e1f677d4df3ca290b03318440b87f4d45d67fe7b7c76a6316cf616fb155a61bb489c8eae829b837ae460421c31c450bddc02daee1ee3d609
Näyttäisi pikaisesti samalta.

Re: Java.

Posted: Sat Jun 09, 2012 12:05 am
by esa94
Pettis wrote:Näyttäisi pikaisesti samalta.
Unohdit tehdä tarkistuksen alun nollalle mutta muuten kovin saman näköinen juu.

Re: Java.

Posted: Fri Jun 22, 2012 1:50 pm
by Feuer
Opiskelen persistenssi-apinaa, aka. JPA:ta. Miksi seuraavan servletin kutsuminen tuottaa poikkeuksen "java.lang.ClassFormatError: Duplicate field name&signature in class file Entiitit/Luonnos123_"?

Code: Select all

package servletter;

import Entiitit.Luonnos123;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author Feuer
 */
public class LuonnosTallennin extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
            String luonnos = request.getParameter("luonnos"), lähettäjä = request.getParameter("lähettäjä");
            
            Luonnos123 tallennettava = new Luonnos123(luonnos, lähettäjä, new Date());
            EntityManagerFactory factory = Persistence.createEntityManagerFactory("ApinatestiPU");
            EntityManager manager = factory.createEntityManager();
            
            EntityTransaction transkatio = manager.getTransaction();
            
            transkatio.begin();
            manager.persist(tallennettava);
            manager.flush();
            transkatio.commit();
            
            manager.close();
            factory.close();
            
            response.sendRedirect("/index.jsp");
            out.close();
        
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}

Ja entiteetti perustuu seuraavaan luokkaan:

Code: Select all

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Entiitit;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;

/**
 *
 * @author Feuer
 */
@Entity

public class Luonnos123 implements Serializable 
{
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    public Luonnos123() {
    }

    public Long getId() {
        return id;
    }
    
    @Column(nullable=false, name="Luonnos")
    private String Luonnos;
    @Column(nullable=false, name="Lahettaja")
    private String Lähettäjä;
    @Column(nullable=false, name="Lahetetty")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date Lähetetty;

    public String getLuonnos() {
        return Luonnos;
    }

    public void setLuonnos(String Luonnos) {
        this.Luonnos = Luonnos;
    }

    public Date getLähetetty() {
        return Lähetetty;
    }

    public void setLähetetty(Date Lähetetty) {
        this.Lähetetty = Lähetetty;
    }

    public String getLähettäjä() {
        return Lähettäjä;
    }

    public void setLähettäjä(String Lähettäjä) {
        this.Lähettäjä = Lähettäjä;
    }

    public Luonnos123(String Luonnos, String Lähettäjä, Date Lähetetty) {
        this.Luonnos = Luonnos;
        this.Lähettäjä = Lähettäjä;
        this.Lähetetty = Lähetetty;
    }
    
    

}

Re: Java.

Posted: Wed Jul 25, 2012 10:49 pm
by Sly_Jack0
Miten saan String.format()-metodin palauttamaan tälläisen merkkijonon "2:04,24"? Kokeilin tehdä näin:

Code: Select all

int mins = 2;
double secs = 4.24;

String.format("%d:%02.2f", mins, secs);
Tämä ei kuitenkaan tunnu toimivan, vaan tulos on "2:4,24". Mitenkä siis saan "töytenollan" paikalleen?
EDIT:

Nerver mind, sain toimimaan näin:

Code: Select all

String.format("%d:%05.2f", mins, secs);
[/edit]

Re: Java.

Posted: Sat Aug 18, 2012 3:53 pm
by Sly_Jack0
Tarvitsisin apua Antin kanssa. Elikkäs minulla on projekti, joka vaatii eri alustoilla eri versiot ulkoisista kirjastoista. Nykyisellään Ant skriptini osaa kopioida oikeat kirjastot ajattevan alustan perusteella. Esim. siis, jos ajan skriptin 32-bittisellä Windowsilla, se kopioi win32 kirjastot pakettiin. Haluaisin kuitenkin skriptin, joka osaisi tehdä monta eri buildia eri kirjastoilla. Elikkä siis skriptin pitäisi alustasta riippumatta luoda kansiot esimerkiksi win32, win64 ja mac alustoille ja jokaiseen projekti .jar:ssa ja oikeat kirjastot mukaan. Onnistuuko tälläinen Ant:lla vai pitääkö vaihtaa Maveniin?

Anteeksi tuplaposti.

Re: Java.

Posted: Sat Aug 18, 2012 11:35 pm
by esa94
Sly_Jack0 wrote:Tarvitsisin apua Antin kanssa. Elikkäs minulla on projekti, joka vaatii eri alustoilla eri versiot ulkoisista kirjastoista. Nykyisellään Ant skriptini osaa kopioida oikeat kirjastot ajattevan alustan perusteella. Esim. siis, jos ajan skriptin 32-bittisellä Windowsilla, se kopioi win32 kirjastot pakettiin. Haluaisin kuitenkin skriptin, joka osaisi tehdä monta eri buildia eri kirjastoilla. Elikkä siis skriptin pitäisi alustasta riippumatta luoda kansiot esimerkiksi win32, win64 ja mac alustoille ja jokaiseen projekti .jar:ssa ja oikeat kirjastot mukaan. Onnistuuko tälläinen Ant:lla vai pitääkö vaihtaa Maveniin?

Anteeksi tuplaposti.
Maveniin vaihtaminen voi olla joka tapauksessa hyvä idea.

Re: Java.

Posted: Sun Aug 19, 2012 12:02 am
by Sly_Jack0
Miksi?

Sain kuitenkin kaiken toimimaan haluamallani tavalla Antilla. Ei siis mitään ongelmaa enää.

Re: Java.

Posted: Tue Sep 18, 2012 4:12 pm
by naputtelija
Toimiiko javan komento

Code: Select all

Luokka.class.getClassLoader().getResources(String ref);
niin, että se etsii kansiosta kaikki tiedostot, jossa kyseinen merkkijono esiintyy vai pitääkö erikseen määritellä villikorteilla? Ajattelin värkätä tässä pikku peliä ja haluan luoda pelimoottorin tyngän itse. Useita tiedostoja tarvitsen animaatioon. Vai tietääkö joku helpomman tavan toteuttaa animaatio LWJGL:llä?

Re: Java.

Posted: Tue Nov 13, 2012 10:55 pm
by Sami The Great
Tietääkös joku jotain hyvää ohjelmaa, joka osaisi tehdä Java virtuaalikoneesta ja omasta java-koodista kätevän standalone-exen? Olen yrittänyt googlesta etsiä, mutta ei oikein tahdo löytyä päivitysten tasalla olevaa systeemiä. Kouluprojektia on nyt koodailtu kaksi kuukautta Javalla, ja tuli viime viikolla sellainen vaatimus, että pelin pitäisi pyöriä niin, että asennusvaiheen jälkeen se toimii ilman muita toimenpiteitä. JRE:n puuttuminen koneesta vähän hankaloittaa pelin käynnistystä, joten joku ratkaisu pitäisi keksiä :D Pystyisiköhän JRE:n asennuksen lisäämään omaan asennusohjelmaan?

Re: Java.

Posted: Wed Nov 14, 2012 7:06 am
by Sly_Jack0
Katoppa launch4j. Sillä pitäisi onnistua .jar kääriminen .exeksi ja sitten voit jollain toisella ohjelmalla tehdä installerin ja ympätä tarvittaessa JRE:n mukaan. launch4j osaa kyllä itsekin tarjota latauslinkin JRE:lle, jos se koneesta puuttuu.