|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Giochetto in Delphi
Salve a tutti, sto cominciando a studiare il Delphi, ho trovato una piccola guida da seguire per realizzare un piccolo videogioco scritto in Delphi.In questo modo penso di unire l'utile al dilettevole per fare della pratica con Delphi. Qui (ci capiamo meglio se provate) trovate l'eseguibile del giochetto(i tasti da usare sono A,Z ed M,J):
http://spazioinwind.libero.it/pablosonoio/index.htm Avevo qualche domandina da porre, e premessa qualche procedura: ************* procedure TTennisForm.Battuta; begin vx:=3; //vx e vy sono le velocità della pallina nelle due direzioni (pensate ad un grafico cartesiano) vy:=Random(4)-2; PallinaPanel.Top:=random(CampoPanel.Height); PallinaPanel.Left:=RetePanel.Left; end; ******************* Questa procedura viene richiamata all'inizio (premendo il bottone) e poi ogni volta che viene fatto un punto e si deve riniziare. 1)Se nella procedura Battuta, voglio, che in maniera random la pallina vada lanciata anche nell'altro senso (perchè nella pratica la battuta è sempre contro la racchetta2) cosa dovrei modificare? Avevo pensato di impostare a True la proprietà Right di PallinaPanel e RetePanel e poi fare così: ********************** procedure TTennisForm.Battuta; begin vx:=3; vy:=Random(4)-2; PallinaPanel.Top:=random(CampoPanel.Height); PallinaPanel.Left:=RetePanel.Left; PallinaPanel.Right:=RetePanel.Right; end; ****************** Così non funziona come posso realizzare quello che voglio ? Ho tante altre domande;Cominciamo pian pianino;.. ![]() Nel frattempo sto lavorando alla versione 1.0 con qualche novità da inserire.
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Non ti ho troppo capito, spiegami meglio cosa vuoi che il programma faccia.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Quote:
In pratica quando viene lanciata la pallina per la battuta avviene sempre in un verso.Vorrei che la pallina fosse indirizzata anche nel verso opposto.
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
L'ho scaricato, ma ho capito solo ora cosa vuoi dire !
Credo sia semplicemente perchè vx é sempre impostato a 3 e mai a -3 ! Quindi devi creare un random che arrivi massimo a 1. Codice:
SegnoRandom = Trunc(Random(1)); if SegnoRandom=0 then SegnoRandom:=1 else SegnoRandom:=(SegnoRandom*True) {Inverte il valore moltioplicandolo per -1}; vx:=(3*SegnoRandom);
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Grazie
![]() ho risolto grazie alle tue delucidazioni in maniera più semplice ancora: Codice:
SegnoRandom:= Random(2); //un numero a caso tra 0 ed n-1 cioè tra 0 e 1 if SegnoRandom=0 then SegnoRandom:=1 else SegnoRandom:=-1; vx:=(3*SegnoRandom);
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Ti vorrei chiedere ancora qualcosa, visto che ci siamo
![]() Avrai visto che le "racchette" nel gioco salgono e scendono, ma non si fermano quando finisce il campo. Come mi consigli di bloccare le racchette appena giunte alla fine del campo? Grazie
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Ho fatto qualche miglioramento, vedete:
http://spazioinwind.libero.it/pablosonoio/index.htm
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
C'è qualche metodo che mi consente di mettere il gioco in pause/resume oppure devo implementarmi la procedura da me?
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Ciao ragazzi, da un'pò sbatto la testa su un problema che mi dovete aiutare a risolvere.
In pratica, avrete visto nel giochetto che cè un menù dove potere scegliere la difficoltà del gioco (di default lo messa a medio). Avrete notato che c'è un piccolo bug, quando mi seleziono la difficoltà del gioco effettivamente la velocità della pallina aumenta o diminuisce come è giusto che sia selezionando le tre possibilità del RadioGroupClick , quando però viene fatto punto da un giocatore, la situazione ritorna al default, con la conseguente perdita di livello di difficoltà selezionato all'inizio. Codice:
procedure TOpzioniBox.DifficoltaRadioGroupClick(Sender: TObject); begin case DifficoltaRadioGroup.ItemIndex of 0: A:=1; //facile 1: A:=1.03; //medio 2: A:=1.2; //difficile end; end; Ammetto che è facile che mi sia spiegato non bene, però credetemi che è difficile spiegare queste cose senza usare codice.Vorrei risolvere questo problema,a costo di andare in chat con qualcuno di voi, mostrarvi tutto il codice che finora ho scritto e capirci meglio!!!
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Per bloccare le racchette alla fine ed all'inizio del campo, ad ogni movimento devi usare del codice simile a:
Codice:
if ( not (Racchetta.Top+Racchetta.Height)>=Pannello.Height and not (Racchetta.Top<=Pannello.Top) then Muovi; Per il radio group non ho capito bene, ma credo che debba dichiarare come public la variabile con la velocità, in modo da accedervi anche dall'altra finestra. (Velocità:=Form2.Velocità)
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#11 | ||
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Quote:
Quote:
Grazie per le risposte
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
||
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Si, forse é meglio che mi mandi un pò di codice.
Potrei anche aiutarti: mi mandi il codice completo, mi dici cosa vuoi fare e cerco di aiutarti a finirlo (se vuoi ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Quote:
Potete trovare l'eseguibile alla solita pagina: http://spazioinwind.libero.it/pablosonoio/index.htm Con la sorpresa di una nuova veste grafica del sito. A voi i commenti!!
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Potrebbe interessare a qualcuno, ho messo i sorgenti del giochetto. Il codice è ben commentato, anche i delphini più inesperti (tipo me stesso) possono trovarlo interessante.
![]()
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Avrei intenzione di "far gestire" una delle due racchette al computer,
nella pratica vorrei poter giocare da solo contro il computer. Implementare questo in Delphi non sembrerebbe una cosa tanto ardua (quindi lo potrei fare anch'io). La mia idea sarebbe (non so se è la strada giusta) randomizzare i movimenti della racchetta2 (adesso che avete i sorgenti del gioco mi posso spiegare meglio), non vorrei però che tale metodo sia troppo semplicistico e nella pratica la racchetta "gestita dal computer" faccia sempre gli stessi movimenti e quindi renda il gioco molto meno interessante rispetto al metodo in cui si gioca in due persone. Avete qualche idea? Nel frattempo io provo qualcosina....
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Vedrò quello che posso fare per l'intelligenza artificiale....
nel frattempo ti mando il codice che ho "corretto"... ho aggiunto qualcosa di utile: leggi i commenti e non ti spaventare per i cambiamenti !
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Quote:
![]() I tuoi accorgimenti hanno migliorato di molto il giochino. Dammi un'pò di tempo per studiarmeli e poi preparati ad un interrogatorio di 3° grado. Ciao ![]()
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
OK, vada per gli interrogatori, ma preparati: l'intelligenza artificiale é vicina ! Anche troppo: l'ho fatto troppo intelligente e nel livello Facile non si riesce mai a vincere. Ora la devo far diventare più stupida.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Quote:
![]() Come c***o fai? Ho perso un bel pò di tempo a fare questo giochino e tu in quattro e quattro otto mi spari un gioco che è molto più bello esteticamente e molto migliorato a livello di codice...meno male che era qualche modifica ![]() Ti devo chiedere una cosa.Ho dovuto abbassare questi valori if (vx<=(-2147483648)) or (vx>=2147483647) then..... altrimenti mi dava errore.Inoltre giocando a livello impossibile se la pallina assume una velocità troppo alta comincia a dare 200 errori e il gioco esce, forse dovremmo fare in modo che se la pallina è troppo veloce (come prima) oltrepassi la racchetta. Diverse cosette non le avevo mai incontrato nè usate...quante cose ho ancora da imparare ![]() Ciao e grazie per il tempo dedicato al giochetto ![]()
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
![]() |
![]() |
![]() |
#20 | |
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Quote:
![]()
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:45.