Visualizzazione dei risultati da 1 a 8 su 8

Discussione: paintComponent

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    63

    paintComponent

    Salve a tutti..
    sto sviluppando un videogame e ho incontrato un problema.
    Allora devo sovrascrivere il metodo paintComponent() del JPanel in cui sto lavorando per far vedere quello che voglio disegnare io. e fino a qua tutto ok. ora ho un problema perchè la mia struttura dati da far vedere è una matrice abbastanza grande, 110 x 110, e questa rappresenta il mio World in cui muovermi liberamente. A me servirebbe fare una stampa del mondo in base alla posizione del mio personaggio.. Cioè e è come se il personaggio avesse una visuale e man mano che si sposta scopre cose nuove.. Come posso fare? sto provando tante soluzioni ma non vanno..

    Grazie mille a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    1) La sezione corretta è quella omonima; Java.
    2) Senza codice non so quanto aiuto potresti ottenere.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Una possible soluzione sarebbe di far vedere sempre un sottoscenario (un sottoarray , non tutto insieme) , l'utente può muoversi nel sottoscenario e qui ci sono due alternative:
    -fai una visuale che si muove con il tuo personaggio , dove lui sta sempre al centro della scena e man mano sposti il sottoscenario (il sottoarray) da visualizzare
    -fai una visuale di sottoarray , decidi di dividere il grande array in tot sottoarray , posizioni il personaggio in un punto di un primo sottoarray e quando il personaggio va oltre la posizione di quel sottoarray visualizzi il successivo sul quale si è mosso
    Non so se ho reso l'idea


  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    63
    si perfetto..
    avevo in mente una cosa del genere.. io ho applicato la cosa che il personaggio è sempre al centro.. e funziona.. cioe mi fa vedere quello che voglio vedere.. pero poi mi va oltre.. cioe se mi sposto mi fa spostare in tutto lo schermo.. puo' essere un problema di pannello? che è troppo grande magari..

    grazie mille per la risp

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Originariamente inviato da peppej89
    pero poi mi va oltre.. cioe se mi sposto mi fa spostare in tutto lo schermo.. puo' essere un problema di pannello? che è troppo grande magari..

    che significa??non ho proprio capito cosa vuoi dire..

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    63
    ahahaha hai ragione.. è un concetto un po' difficile da spiegare.. cmq credo di avere risolto
    grazie cmq.. gentilissimo

    ciauuzz

  7. #7
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Perché uno usare framework fatti apposta come OpenGL?

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    63
    niente non ho risolto.
    Questo è il codice:

    @Override
    protected void paintComponent(final Graphics g)
    {
    final World currentWorld = gameManager.getCurrentWorld();
    for (int i = currentWorld.getHunter().getY() - PLAYER_VIEW; i <= currentWorld.getHunter().getY() + PLAYER_VIEW; i++)
    {
    if(i < 0) // CONTROLLO INDICE FUORI MATRICE
    while(i < 0)
    i++;
    if(i > currentWorld.getColLand() -1)
    continue;
    h = 0;
    for (int j = currentWorld.getHunter().getX() - PLAYER_VIEW; j <= currentWorld.getHunter().getX() + PLAYER_VIEW; j++)
    {
    if(j < 0) // CONTROLLO INDICE FUORI MATRICE
    while(j < 0)
    j++;
    if(j > currentWorld.getColLand() -1)
    continue;
    switch (currentWorld.getCellAt(j, i))
    {
    case World.GRASS:
    g.drawImage(imageProvider.getGlass(), k * CELL_SIZE, h * CELL_SIZE, this);
    break;
    case World.GRASS_LIGHT:
    g.drawImage(imageProvider.getGlassLight(), k * CELL_SIZE, h * CELL_SIZE, this);
    break;
    case World.ROCK:
    g.drawImage(imageProvider.getRock(), k * CELL_SIZE, h * CELL_SIZE, this);
    break;
    case World.SOIL:
    g.drawImage(imageProvider.getSoil(), k * CELL_SIZE, h * CELL_SIZE, this);
    break;
    case World.TREE:
    g.drawImage(imageProvider.getTree(), k * CELL_SIZE, h * CELL_SIZE, this);
    break;
    case World.WATER:
    g.drawImage(imageProvider.getWater(), k * CELL_SIZE, h * CELL_SIZE, this);
    break;
    case World.END:
    g.drawImage(imageProvider.getEnd(), k * CELL_SIZE, h * CELL_SIZE, this);
    break;
    default:
    break;
    }
    h++;
    }
    k++;
    }
    // poi fuori da tutti i for disegno anche il personaggio
    g.drawImage(hunterImage, (gameManager.getHunter().getY()) * CELL_SIZE, (gameManager.getHunter().getX()) * CELL_SIZE, this);

    CELL_SIZE = 50 .. cioè è la dimensione delle celle che faccio vedere nel mio JPanel.


    Il problema è che il mondo me lo disegna per bene e mi scorre anche quando faccio i movimenti del giocatore.. Pero' molte volte quando sposto il giocatore mi trovo avanti nel disegno di 2 celle e non di 1, causa lo slittamento del disegno che serve a dare l'effetto dello schermo scorrevole mentre sposto il giocatore.. Come posso risolvere questa cosa?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.