Java.

Muu yhteisön välinen keskustelu.
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: Java.

Post 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.
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
User avatar
Sami The Great
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 4:15 pm
Contact:

Re: Java.

Post 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.
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Java.

Post 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?
User avatar
Sami The Great
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 4:15 pm
Contact:

Re: Java.

Post 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.
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
User avatar
Sami The Great
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 4:15 pm
Contact:

Re: Java.

Post 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
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: Java.

Post 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()?
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: Java.

Post 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.
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: Java.

Post 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]
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Pettis
The Evil Admin
The Evil Admin
Posts: 1044
Joined: Sun Aug 26, 2007 5:08 pm
Location: Rovaniemi
Contact:

Re: Java.

Post 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.
CB Repository .com - Sinne ne kaikki koodit menneet on!
MunVerkko - Ilmaisia foorumeita ja blogeja
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Java.

Post by esa94 »

Pettis wrote:Näyttäisi pikaisesti samalta.
Unohdit tehdä tarkistuksen alun nollalle mutta muuten kovin saman näköinen juu.
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: Java.

Post 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;
    }
    
    

}
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Java.

Post 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]
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Java.

Post 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.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Java.

Post 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.
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Java.

Post by Sly_Jack0 »

Miksi?

Sain kuitenkin kaiken toimimaan haluamallani tavalla Antilla. Ei siis mitään ongelmaa enää.
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: Java.

Post 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ä?
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
Sami The Great
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 4:15 pm
Contact:

Re: Java.

Post 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?
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Java.

Post 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.
Post Reply