Autore Topic: Tombola  (Letto 4345 volte)

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Tombola
« il: 22 Febbraio 2012, 21:20:05 »
Ciao a tutti!
Siccome non esiste una sezione per le presentazioni (strano, perchè non la fate? :) ) lo faccio qui: mi chiamo Massimo, ho 46 anni e mi diletto in programmazione Basic. Ho cominciato nel lontano '89 con un Commodore 16 (sepolto in soffitta e dovrebbe essere ancora funzionante), erano più i reset che facevo che tutto provando cose strane ;D, poi sono passato al mitico QB 4.5 che uso tuttora ogni tanto, breve puntatina sul VB e da pochi mesi dopo il passaggio da winciof a Debian ho scoperto Gambas, e mi piace parecchio.
Dopo i convenevoli le domande: sto scrivendo una piccola applicazione per segnare e visualizzare i numeri estratti nella tombola, come si fa spesso con i proiettori nelle sagre di paese. Il programma funziona, anche se non l'ho ancora finito, ma vorrei migliorarlo. Per i 90 numeri ho usato le cifre LCD, e per ogni cifra ho scritto la sua routine per gestire il click del mouse (un lavoraccio):

PUBLIC SUB LCD2_MouseDown()
accendi(lcd2)
END

Che a seconda dello stato accende la cifra cambiando il colore di sfondo:

SUB accendi(numero AS lcdnumber)
IF numero.background = &hc0 THEN
   numero.Background = &h80ff00
   ultimo.value = numero.value
ELSE
   numero.Background = &hc0
   ultimo.value = 0
ENDIF
END

ultimo serve a far vedere l'ultimo numero estratto.
Inoltre nel menù c'è una opzione per spegnere tutti i numeri accesi in un colpo solo, ma l'unica maniera che mi è venuta in mente è questa roba:

PUBLIC SUB Azzera_Click()
LCD1.background = &hc0
LCD2.background = &hc0
LCD3.background = &hc0
.
.
.
LCD88.background = &hc0
LCD89.background = &hc0
LCD90.background = &hc0
ultimo.value = 0
END

altro lavoraccio.
Vorrei semplificare il tutto, so che c'è la possibilità di riunire tutti gli LCD in un gruppo, ma non mi è ancora chiaro in che maniera operare. Nel VB c'era la possibilità di creare array di controlli ma qui la storia è differente.
Come posso fare per stabilire dentro nel gruppo quale numero è stato cliccato e accenderlo di conseguenza?
Per Azzera_Click ho già in mente una mezza idea, vediamo se funge.
Per ora questo è tutto, ma non preoccupatevi, arriveranno altre domande. ;)
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Tombola
« Risposta #1 il: 22 Febbraio 2012, 22:05:49 »
Prova questo esempio e poi chiedimi quello che non hai capito... ovviamente si puo' fare in tanti modi, questo e' uno :)


Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: Tombola
« Risposta #2 il: 22 Febbraio 2012, 22:24:33 »
La routine di reset andrebbe bene se non ci fosse il problema che nel form non ci sono solo Gli LCD, ma anche una label ed un valuebox che indicano l'ultimo numero estratto, ed a questi 2 il colore di sfondo non deve essere cambiato. Perchè se ho capito bene la routine cambia il colore a tutti gli oggetti del form, giusto?
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Tombola
« Risposta #3 il: 22 Febbraio 2012, 23:09:46 »
La sub Reset va solo a processare gli Lcd... per 'scartare' uno di essi basta fare un piccolo controllo con la proprietà tag

Allego esempio (ormai programma ;) )
« Ultima modifica: 22 Febbraio 2012, 23:12:55 da milio »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Tombola
« Risposta #4 il: 22 Febbraio 2012, 23:13:39 »
A quasi dimenticavo... Benvenuto sul pianeta Gambas :)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Tombola
« Risposta #5 il: 22 Febbraio 2012, 23:46:06 »
Benvenuto!  :2birre:

La Tombola ... eh! Mi ricordo quando anch'io ho realizzato un programma sulla tombola sul Commodore Vic20. Funzionava perfettamente, ma non fu allora apprezzato dai partecipanti al gioco, perchè, senza il cartellone in cartoncino e senza il sacchetto coi numeri da estrarre a mano, aveva perso quel calore umano, necessario a rendere il gioco piacevole. Dopo tanta fatica, l'ho usato un paio di volte.
Sugli oggetti grafici di una form, organizzati in GROUP, ho aperto qualche tempo fa questa discussione . Se puoi, dai un'occhiata, magari ti potrà essere d'aiuto.  :D
 :ciao:
:ciao:

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: Tombola
« Risposta #6 il: 23 Febbraio 2012, 00:29:42 »
Ops, chiedo venia, non avevo letto bene il programma. :-[
Ed un problema è risolto. Domani arriverò con il resto.
Grazie del benvenuto. :ciao:
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: Tombola
« Risposta #7 il: 23 Febbraio 2012, 17:55:10 »
Benvenuto!  :2birre:
Sugli oggetti grafici di una form, organizzati in GROUP, ho aperto qualche tempo fa questa discussione . Se puoi, dai un'occhiata, magari ti potrà essere d'aiuto.  :D
 :ciao:

Un pò complicato, non ci ho capito granché. :D
Però c'è un altro problema: nella sezione delle dichiarazioni ho messo questo:

PUBLIC SUB _new()
PUBLIC serie[90] AS Byte, punta AS Byte
END

Che mi serve per tenere traccia della successione dei numeri estratti. Però quando faccio partire il programma mi da l'errore "Unexpected PUBLIC alla linea 4 in FMain.class". Stessa storia se uso STATIC. Come mai? ???
« Ultima modifica: 23 Febbraio 2012, 18:00:00 da Top Fuel »
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Tombola
« Risposta #8 il: 23 Febbraio 2012, 19:51:23 »
Perché nelle Sub e Function le variabili vanno dichiarate con Dim e servono solamente all'interno della funzione.

Per dichiarare Variabili private al modulo/classe o pubbliche vanno dichiarate all'inizio del listato del codice.


Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: Tombola
« Risposta #9 il: 23 Febbraio 2012, 20:38:15 »
Ok, risolto anche questo. :ok:
Resta solo da risolvere (per ora) il problema degli lcd nel gruppo, ma ci lavorerò sopra.
In effetti devo dire che è un pò differente da VB e dal basic classico, anche se si basa su questo.
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Tombola
« Risposta #10 il: 23 Febbraio 2012, 20:54:29 »
Nel mio 'esempio' ho gia' raggruppato tutti gli Lcd dichiarandoli in questo modo:

Codice: [Seleziona]
For Nx = 1 TO 10
  Lcd = New LCDNumber(Row) AS "Lcd"
Next

In questo modo tutti gli eventi vengono reindirizzati dichiarandoli cosi':

Codice: [Seleziona]
Public Sub Lcd_NomeEvento

Per sapere chi ha scatenato l'evento basta utilizzare la classe Last.

Se invece i tuoi lcd li vuoi 'disegnare', allora devi inserire l'etichetta del gruppo dentro la griglia delle proprietà che ti ritrovi a destra nella cella Group (immagine allegata) e dichiarare gli eventi come sopra.


Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: Tombola
« Risposta #11 il: 23 Febbraio 2012, 21:17:42 »
L'interfaccia è già disegnata quasi tutta, mancano solo un paio di cose, e gli lcd sono già stati assegnati al loro gruppo, vediamo se risolvo usando questa classe LAST.
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Tombola
« Risposta #12 il: 24 Febbraio 2012, 11:56:30 »
Ciao e benvenuto. Se può esserti utile io decenni fa inizia una cosa simile che, se non ricordo male, è pure funzionante....si chiama tombyla e il sorgente lo torvi qui: https://code.google.com/p/soluzionisoftware/downloads/list

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Tombola
« Risposta #13 il: 24 Febbraio 2012, 16:52:29 »
Ciao e benvenuto. Se può esserti utile io decenni fa inizia una cosa simile che, se non ricordo male, è pure funzionante....si chiama tombyla e il sorgente lo torvi qui: https://code.google.com/p/soluzionisoftware/downloads/list

decenni fa... Mmmmm
Ma sbaglio o siamo solo un anno avanti rispetto al 2011, quando dicevi di essere un ragazzo che aveva superato da poco la ventina?   :rotfl:
 :ciao: :ciao:
:ciao:

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: Tombola
« Risposta #14 il: 24 Febbraio 2012, 21:07:36 »
Ciao e benvenuto. Se può esserti utile io decenni fa inizia una cosa simile che, se non ricordo male, è pure funzionante....si chiama tombyla e il sorgente lo torvi qui: https://code.google.com/p/soluzionisoftware/downloads/list

Niente, non funziona neanche così. Boh... :-\
Ma non demordo, riuscirò a farlo funzionare prima o poi. :hatecomputer:
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.