View Full Version : [Java]Aiuto per progetto!
Duke_Nukem
06-07-2005, 16:54
Innanzitutto salve a tutti ragazzuoli, sono un nuovissimo utente di questo forum ;) .
Sono capitato qui perchè mi è parso che ci sia parecchia gente che di programmazione ne sa un bel po', e io ho bisogno di un grosso aiuto...sperando che ci sia qualche buon'anima che me lo dia ovviamente.
Devo realizzare un gioco, ovvero Forza4, in 7-8 giorni. Il gioco deve avere una sua grafica, ma NON creato attraverso una applet.
Ora, mi sento abbastanza preparato per quanto riguarda cicli, iterazione, ricorsione ed array (senza la parte dei vectir che mi devo guardare). Mi manca, per potere cominciare, tutto il bagaglio relativo alla parte grafica ed anche un po' di concetti di base.
Ho letto la parte della grafica sui PDF Mokabyte, ma non è che ci abbia ricavato un granchè. Quindi ho bisogno del vostro aiuto.
Allora, partiamo dalle cose DAVVERO semplici:
1) supponendo di avere un frame principale di 500x500, se io volessi suddividerlo in due parti (con due Panel, direi no?), dovrei creare due panel di dimensioni, ad esempio, di 500x400 uno e di 500x100 l'altro e poi inserirli nel frame principale con "add", giusto? Se è così, come si settano le grandezze dei panel nella maniera più semplice?
Alvaro Vitali
06-07-2005, 17:06
Puoi usare setSize() ma attento perchè credo tu debba prima darti un'infarinata riguardo i layout !
Cmq ricorda che la documentazione è tua amica, se leggi quella riferita alla classe JPanel scopriresti che erdita dalla classe java.awt.Component il metodo
public void setSize(Dimension d)
Descrizione: Resizes this component so that it has width d.width and height d.height
Magari parti da qui
http://java.sun.com/docs/books/tutorial/uiswing/layout/visual.html#border
e leggi la documentazione "HOW TO USE..." disponibile per ogni layout quando hais celto quelloc he fa per te...
Ciao! ;)
Duke_Nukem
06-07-2005, 17:24
Ho letto tutto quello che ho potuto, grazie per l'aiuto! Di default viene impostato il FlowLayout, ma non fa per me perchè dispone gli elementi da sinistra verso destra. Il gridLayout non va bene perchè crea una griglia di elementi di uguali dimensioni, e a me ne serve uno grande per l'immagine di gioco ed uno per il menu. In teoria il border layout andrebbe bene, però sinceramente non so se mi convenga: vengono create 5 aree, mentre il ne userò solo 2 (andrebbe bene perchè le altre non vengono visualizzate).
A meno che il grid Layout non prenda anche panel di differenti dimesioni, direi che il border è l'unico...
Alvaro Vitali
06-07-2005, 17:44
Il GridBagLayout è il più flessibile (anche se più laborioso) però forse nel tuo caso la soluzione migliore sarebbe il Layout super deprecato :) che non viene neanche nominato nella lista di quelli esistenti :D
Sarebbe il "null Layout" e ti permette di piazzare degli oggetti grafici con coordinate e dimensioni assolute nel Frame principale.
E' considerata una "bad practice" ma forse per te è la cosa migliore (ovviamente devi prendere delle accortezze tipo impostare non-resizable il frame principale.
http://www.leepoint.net/notes-java/GUI/layouts/nulllayout.html
Duke_Nukem
06-07-2005, 17:47
No, non è proprio il caso, visto che questo dovrà essere un progetto universitario :(
Utilizzerò il GridBagLayout, grazie!
A presto con nuovissime e stupidissime domande!
Duke_Nukem
06-07-2005, 19:26
Molto bene. Risolto il primo problema, ne sorge subito un secondo. Possiedo già le 5 immagini fondamentali: il campo da gioco, una cella vuota, una cell piena, un gettone rosso ed uno giallo.
In previsione di quello che dovrò fare, come la disegno sul panel l'immagine del campo da gioco? La disegno attraverso un array (dove ripeto l'immagine della cella) oppure tutta intera? Dove trovo i metodi per fare questo?
Grazie mille!
devi utilizzare la classe Graphics, ma prima dei importare l'immagine utilizzando la classe Image
Duke_Nukem
06-07-2005, 21:38
Mumble...consultando la documentazione non capisco come si riesca ad importare un immagine.
Qualcuno che mi faccia un esempio semplice c'è? :p
gaglioppo
07-07-2005, 09:53
ecco qui:
gaglioppo
07-07-2005, 09:57
Consultando consultando, magari guarda meglio :-D
Chissà di quale università sei...perchè sto facendo un progetto simile pure io....
//import javax.imageio.*;
class Pannello extends JPanel
{
private Image image1;
// costruttore:
public Pannello()
{
try
{
image1 = ImageIO.read(new File("sfondo.gif"));
}
catch (IOException exception)
{
exception.printStackTrace();
}
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(image,12,12,null);
}
Duke_Nukem
07-07-2005, 12:10
"Simile" o "lo stesso"? XD, io sono a Scienze di Internet, Bologna :p
Grazie per l'aiuto, adesso lo provo...
Duke_Nukem
07-07-2005, 12:18
Ma....visto che la devo poi far entrare nel Panel centrale, come me la sbrigo?
Duke_Nukem
07-07-2005, 12:46
Io l'ho inserita attraverso una JLabel...però da quel che ho capito le JLabel non sono suscettibili agli eventi, quindi non va bene :cry:
Come posso fare altrimenti?
Duke_Nukem
07-07-2005, 17:28
Aspettate, mi è stato consigliato di importare le immagini in questa maniera:
URL importaImg = getClass().getResource("Forza_4campo.jpg");
Campo=new ImageIcon(importaImg);
Però a sto punto ho Campo che contiene l'immagine, e se voglio disegnarla all'interno di un Panel non posso fare semplicemente add, vero?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.