PDA

View Full Version : Esercizi VISUAL BASIC


Pagine : [1] 2

leadergl
17-11-2003, 14:50
Sto cercando pian piano di imparare il Visual Basic 6.....ma non ho troppa fantasia sugli esercizi da fare....qualcuno di voi potrebbe darmi (diciamo anche assegnarmi) degli esercizi da fare, via via di complessità maggiore??

Ricordate però che parto quasi da zero, ho discrete basi di PASCAL, quindi non è la prima volta che ho a che fare con la programmazione, poi faccio l'univ in Informatica....quindi...partendo da questo mi date esercizi da fare??

Ho fatto 2 programmini, uno che mi calcola il Bitrate Video esatto che bisogna mettere per la compressione di video con DivX (segue una regola precisa per il calcolo) e l'altro...beh è una scemità...cmq utilizza il comando di Windows NET SEND per inviare frasi tramite rete ad un'altro computer!

......ok...detto questo ASSEGNATEMI

matpez
17-11-2003, 15:40
Se già sai fare qlc programmino in pascal allora secondo me potresti fare un programma che calcoli il CODICE FISCALE!

Come ti sembra?!?!?

Per info qui: http://www.olografix.org/isazi/dnfcrew/scritti/codicefiscale.html


PS: una volta finito il codice fiscale ci applichi l'omocodia :cool:

Se nn sai cos'è te la spiego poi quando hai finito quest'esercizio :)

fgmac
17-11-2003, 15:57
Un buon sito (una comunuty con forum dedicati) con esempi e quant'altro e'
http://www.redangel.it/

Magari lo conosci gia'.
Ti invito ad uploadare i programmini che hai citato e che hai fatto tu.

leadergl
17-11-2003, 16:22
....ho un unico problema...non so in VB come si scorre nelle stringhe!!!

...sto procedendo così....nel codice del form dichiaro le variabili (globali) che mi serviranno, poi ad esempio per il nome, una volta che è stato digitato devo scorrere nel testo del nome alla ricerca delle consonanti e le metto in un'altra stringa, se questa è maggiore di 3 prendo i primi 3 elementi, se è minore di tre ci aggiungo passo passo le vocali....o la X.....ma come faccio a scorrere nel nome??

Per il PASCAL per avere la lunghezza di una stringa si facena lenght(nome) e lui mi diceva di quanti caratteri era il nome, poi per leggere il singolo carattere si faceva nome[2] e lui mi leggeva il secondo carattere del nome....ma in VB???

matpez
17-11-2003, 16:27
Ecco a te :)

Poi ti guardi te cosa ti dice quando scrivi la funzione (per i vari parametri intendo)

LEN: lunghezza di una stringa!

MID: prende i caratteri all'interno di una stringa

LEFT: prende i caratteri a partire da sinistra

RIGHT: prende i caratteri a partire da destra

TRIM: toglie gli spazi all'inizio e alla fine della stringa
LTRIM: toglie gli spazi solo a sinistra della stringa
RTRIM: toglie gli spazi solo alla destra della stringa


Dovrebberi essere tutte quelle che ti servono :D

matpez
17-11-2003, 16:28
Originariamente inviato da leadergl
....ho un unico problema...non so in VB come si scorre nelle stringhe!!!

Nel tuo caso devi usare il MID :)

PS: se utilizzi solo stringhe e memorizzi il dato prelevato in variabili stringa, ti consiglio di mettere un $ dopo alle funzioni che hanno como uscita altre stringhe (MID$, LEFT$, etc etc) :p

leadergl
17-11-2003, 16:38
grazie mille.....m'hai risparmiato un po di fatica....mi stavo leggendo tutte le funzione che facevano e prima d'arrivare a M........cmq un'altra cosa come faccio a definire un set di caratteri??

ad esempio io analizzo la stringa e:

for i=1 to len(stringa)
if mid(stringa,i,1) è diverso da set di caratteri allora


dove set di caratteri sono le vocali....("a","e","i","o","u")...capito che voglio fare??? in pascal saprei farlo ma qui......help

matpez
17-11-2003, 16:46
Originariamente inviato da leadergl
for i=1 to len(stringa)


Questo codice va bene ma ti consiglio una struttura del genere perchè cosi facendo rallenti di qlc millisecondo l'esecuzione del programma :p


nLen=Len(Stringa)
For nI=1 to nLen
<istruzioni>
Next


Come vedi mettere Next al posto di Next nI è molto + veloce (si parla sempre di millisecondi), la stessa cosa vale per usare una variabile contenente la lunghezza della stringa!

Per la seconda cosa definire un set di caratteri io utilizzerei un truschino della InStr che in pratica ti torna la la posizione numerica del carattere interna in una stringa, per esempio: InStr("m","ciao_mamma"), torna il numero 6!!

Così facendo se noi facciamo:
If InStr("aeiou", Mid(stringa, i, 1)) > 0 Then
ti dice se c'è il carattere :p

leadergl
17-11-2003, 16:58
....ah ok, grazie!!
Che ne dici, così è ok??


Private Sub calcola_testo(vtesto As String)
Dim i, n As Integer
Dim temp, vocali, cons As String

n = Len(vtesto)

For i = 1 To n
If InStr("aeiou", Mid(vtesto, i, 1)) > 0 Then
vocali = vocali + Mid$(vtesto, i, 1)
Else
cons = cons + Mid$(vtesto, i, 1)
End If
Next

temp = "x"

If Len(cons) >= 3 Then
vnome = Left$(cons, 3)
Else
If Len(cons) = 2 Then
vnome = cons + Left$(vocali, 1)
Else
vnome = cons + Left$(vocali, 1) + temp
End If
End If

End Sub

Ho messo temp="x" perchè non so se posso scrivere alla fine vnome = cons + Left$(vocali, 1) + x

.....allora,come csì è ok?...

leadergl
17-11-2003, 17:00
una precisazione quello che ho scritto è il codice per trovare le lettere del COGNOME.....non farti confondere dal fatto k ho scritto vnome.....l'ho già corretto in vgnome che sta per valore cognome!!

matpez
17-11-2003, 17:02
nn incollarmi un pezzo di codice ala volta...fai un bel programmino, poi una volta finito me lo passi e lo controllo (come un bravo insegnante :p :p :p )

Cmq metti $ qui nel MID: If InStr("aeiou", Mid(vtesto, i, 1)) > 0 Then

e poi le stringhe le puoi mettere benissimo Stringa=Stringa & "x" (a me piace collegare con la & ma va benissimo anche la tua +)! :p

leadergl
17-11-2003, 17:19
...ho scritto parte del codice, l'ho testato....ma non mi da niente...

Private Sub Form_Load()
Dim vnome, vgnome, vluogo As String
Dim vdata As Integer

End Sub

Private Sub calcola_Click()
calcola_nome (nome.Text)
codice.Caption = vnome
End Sub


calcola_nome(nome.text) è la procedure che ho postato prima e nome.text è i contenuto del textbox dove si scrive il nome, ma perche quando faccio calcola in CODICE.CAPTION (in cui avevo memorizzato aaaa) non mi compare nulla??

Dovrebbero comparirmi le parti del nome del codice fiscale....xkè mi da il vuoto?? cos'è che non va nella procedura calcola_nome??

leadergl
17-11-2003, 17:22
forse ho capito....ho sbagliato la chiamata alla procedura calcola_nome......ok ma come si fa a richiamare la procedura??

forse come nel pascal deve trovarsi prima del comando che la richiama??

matpez
17-11-2003, 17:29
Originariamente inviato da leadergl
...ho scritto parte del codice, l'ho testato....ma non mi da niente...

Private Sub Form_Load()
Dim vnome, vgnome, vluogo As String
Dim vdata As Integer

End Sub

Private Sub calcola_Click()
calcola_nome (nome.Text)
codice.Caption = vnome
End Sub


Per una Funzione basta che tu gli dai per esempio vNome=calcola_nome (nome.Text)

Stai facendo degli errori di struttura, allora io ti consiglio di andare su opzioni di VB e selezionare la voce "dichiarazioni obbligatorie"

Dopo di che metti un bel Option Explicit all'inizio della tua form

Ora le varibili devi dichiarare bene, cioè quello che sta dopo Option Explicit sono varibili globali della form, quelle che dichiari dentro alle varie Sub o Function sono varibili locali che una volta uscito dalla procedura o funzione vengono scaricate?

Chiaro?

Cmq nn chiedere ad ogni riga, altrimenti dov'è il gusto di programmare ?!?! :)

matpez
17-11-2003, 17:30
In VB nn c'è un senso logico di fichiarare le routine, cioè tu le puoi mettere su, sotto, a destra e a sinistra e lui sempre le trova :D, cosi nn sei obbligato a dichiararle sempre in cima al programma :rolleyes:

matpez
17-11-2003, 17:35
Originariamente inviato da matpez
In VB nn c'è un senso logico di fichiarare le routine, cioè tu le puoi mettere su, sotto, a destra e a sinistra e lui sempre le trova :D, cosi nn sei obbligato a dichiararle sempre in cima al programma :rolleyes:

Ti ho fatto un esempio, cosi capisci meglio quello che ti voglio dire :p

leadergl
17-11-2003, 17:52
ok ho risolto....non ho fatto come hai detto tu....o meglio almeno in parte!!

Quelle che prima erano Private Sub calcola_nome etc ora sono diventate Private function....così è stato tutto più semplice!!!

Ora ho convertito sia il cognome che il nome, ora procedo con data e luogo di nascita!!

a fra poco!

e ancora grazie!!

leadergl
17-11-2003, 17:54
...ops non avevo visto che mi avevi postato esempi....vabbè li analizzo dopo, ora completo il codice del mio programmino e poi ti posto tutto!!! ok?

ti faccio un file con l'eseguibile e tutto ciò che riguarda codice e form

matpez
17-11-2003, 17:55
Originariamente inviato da leadergl
...ops non avevo visto che mi avevi postato esempi....vabbè li analizzo dopo, ora completo il codice del mio programmino e poi ti posto tutto!!! ok?

ti faccio un file con l'eseguibile e tutto ciò che riguarda codice e form

Passa passa :)

leadergl
17-11-2003, 17:59
ops........nn so come si fa e leggere nella data!!!

è in formato GG/MM/AA

........cercando ho notato la funzione DATEPART....ma nn so se è lei e nn ho capito un granchè come si usa.....help

matpez
17-11-2003, 18:04
molto palesemente: Date()

Per formattarla basta che fai Format$(Date(), "dd/mm/aa")

leadergl
17-11-2003, 18:11
cioè nn ho capito, allora io ho una textbox dove scrivere la data nel format GG/MM/AA

mettiamo che io ci scriva dentro 19/12/75

per richiamarmi uno di questi 3 elementi che devo fare?
data(gg) e lui mi restituisce il giorno??

matpez
17-11-2003, 18:19
Originariamente inviato da leadergl
cioè nn ho capito, allora io ho una textbox dove scrivere la data nel format GG/MM/AA

mettiamo che io ci scriva dentro 19/12/75

per richiamarmi uno di questi 3 elementi che devo fare?
data(gg) e lui mi restituisce il giorno??

Ops, forse ho capito male :D


No per fare una cosa del genere basta che usi le funzioni:

Day("13/09/82")=13
Month("13/09/82")=9
Year("13/09/82")=1982

leadergl
17-11-2003, 18:34
...ma la tabella dei comuni è su un file....ed inoltre non ci sono tutti!!!!

come faccio a procedere??

1 - non sai dove reperire una tabella COMPLETA con i codici di tutti i comuni??

2 - ...come la implemeto ?!?!

....mi sa che mo viene il difficile....

matpez
17-11-2003, 18:39
Ora mi sa che devi usare le query per il linguaggio SQL :)

http://www.ublteam.com/Slayer/Comuni.rar

Qui trovi il database completo! :p

Ora...sai qlc sui database?

leadergl
17-11-2003, 18:46
ah si certo so TUTTO...........no mio dio.......cmq sono pronto ad imparare tutto ciò che serve!!!!

dimmi

leadergl
17-11-2003, 19:14
con quale comando si trova il resto di una divisione??

matpez
17-11-2003, 19:31
Originariamente inviato da leadergl
con quale comando si trova il resto di una divisione??

MOD

matpez
17-11-2003, 19:34
Originariamente inviato da leadergl
ah si certo so TUTTO...........no mio dio.......cmq sono pronto ad imparare tutto ciò che serve!!!!

dimmi

Secondo me è prematuro arriva già ai database, sarebbe come correre a 1 mese di vita!!

Per adesso fissa il codice della tua città poi più avanti si vedrà!!

leadergl
17-11-2003, 19:45
se inserisco il comando MOD mi da errore, mi dice expected expression!!!

matpez
17-11-2003, 20:05
Originariamente inviato da leadergl
se inserisco il comando MOD mi da errore, mi dice expected expression!!!

:cry: Per forza, MOD è l'operatore ma devi metterlo come un qlc operatore matematico, 6 mod 2 .... risultato = 0 :)

leadergl
18-11-2003, 00:11
per ora ti posto l'eseguibile, dimmi se ti piace.....

il codice completo te lo mando quando sarà tutto terminato.....perchè come comune per il momento ho messo solo il mio...

dammi un parere

matpez
18-11-2003, 00:47
Mancano tutti i controlli...

C'è un errore sull'algoritmo del nome

C'è un errore se il nome o il cognome è minore di 3 caratteri... il sito che ti ho passato (che sinceramente nn ho letto) contempla questo problema???

Scanso di equivoci ti passo la mia relazione, li hai tutto ben scritto!

A presto. :p

PS: La relazione è fatta su questo mio sito, usalo pure per verificare la correttezza del tuo programma!! http://www.ublteam.com/cf/daticf.asp

leadergl
18-11-2003, 10:08
si per i controlli lo so ancora li devo implementare.....

per quel che riguarda gli altri errori.....nn è dipeso da me, quel sito era un po contorto nel far capire certe cose, ma col file di testo che m'hai mandato è tutta un'altra storia!!!

Correggo, aggiungo controllo errori e poi te lo riposto!

Senti ma per il fatto dei comuni, non si può implementare in un file di testo?? oppure se è più semplice da gestire dell'access magari in excel....che ne dici???

matpez
18-11-2003, 13:25
No la migliore delle cose è i database, perchè possono essere interrogati e ricevere i dati in velocità pazzesche rispetto un qlc file! :)

leadergl
18-11-2003, 14:25
....beh allora per andare avanti mi serve una mano sui database......help....dai mi spieghi solo quello che basta per fare il programma!!

Magari mi fai un bel file col word, me lo posti, io leggo tutto, capisco ed imparo e poi completo il programma del codice fiscale........dai non puoi lasciarmi così ad un passo dalla fine!!!

matpez
18-11-2003, 14:41
Allora ti posti quest'esempio, tu provalo e dimmi se nn ti è chiaro qlc, per farlo funzionare devi avare installato almeno l'MDAC 2.7 :)

Qeusto programma utilizza un database, ti dico solo cenni basi di linguaggio SQL, a te cmq per il tuo programma interessa solo la lettura, per l'inserimento e l'aggionramento dei dati nn te ne frega nulla!

Allora:

SELECT <campo1, campo2>: serve per selezionare i campi (le colonne di una tabella)
FROM <tabella>: meti il nome della tabella che ti interessa
WHERE <condizione>: è la condizione di ricerca, per esempio una query per te sarebbe una come questa:

SELECT CodicePaese
FROM TabComuni
WHERE Comune='BIELLA' AND Provincia='BI'

Il risultato sarà magicamente: A859 :p

leadergl
18-11-2003, 16:03
sto provando un'altra strada.....credo di esserci vicino, ma mi manca qualcosa....ti posto l'immagine di un esempio fatto da me......poi dimmi tutto, cosa dovrei aggiungere o modificare


Private Sub btnCerca_Click()
Dim ripeti, trovato As Boolean
Dim dacercare As String
dacercare = cerca.Text
dbArchivio.Recordset.MoveFirst

Do
trovato = True
ripeti = Not (dbArchivio.EOFAction Or trovato)
If ripeti Then
dbArchivio.Recordset.MoveNext
End If
Loop While ripeti

If Not trovato Then
MsgBox "Stringa non trovata"
Else
'dovrei associare ad una variabile il contenuto del record
'dove ho appena trovato corrispondenza
End If
End Sub


nel form ci sta una textbox=cerca.text
ed il pulsante cerca

matpez
18-11-2003, 17:12
Tu sei pazzo.... :eek:

Ti ho mandato l'esempio per imparare qlc di nuovo :rolleyes: , non per utilizzare una tabella come se fosse un vettore, ma sai quando tempo ci vuole per sflogliare 6000 comuni :confused:

Dai cerca di fare come ti ho detto io utilizzando le query :p

matpez
21-11-2003, 14:00
Ma dove sei finito?

leadergl
21-11-2003, 15:42
aleeee oh oh, aleeeee oh oh..........ciao proprio adesso HO FINITO!!!!!

Beh proprio finito no...però ho fatto LA RICERCA NEL DATABASE....e tutto da solo....certo non sarà delle più raffinate ed efficienti.....ma la fa!!!!!!

Ho usato un ciclo while finchè non finiva di scorrere tutto il recordset e IF trovava una parola uguale a quella che ho ricercato bene e mi estraeva il CODICE PAESE.......ancora non c'ho inserito i controlli, ma funziona e per me è una soddisfazione!!!

Cmq il programma è finito, tranne i controlli nella ricerca nel database e per le varianti di codice fiscale....come si chiamavano???

Cmq quelle è una sciocchezza farle, penso che stasera lo ultimo!!
Per ora ti posto l'eseguibile ed il database......poi una volta finito TUTTO ti darò il codice completo e le form!!! ok?

Per la tabella comuni, x farla funzionare col VB6 l'ho aperta con Access XP e l'ho convertita per Access 97...tutto qui, altrimenti non me la accetta valida!! Sfigatamente per raggioni di spazio non me la fanno inviare.......cmq ti invio l'eseguibile

matpez
21-11-2003, 16:44
:)

Allora la tua ricerca nn va affatto bene...perchè nn puoi fare una ricerca su 9000 comuni a mano...altrimenti usi un file normale di testo e ti risolvi il problema...i database sono nati apposta per memorizzare e velocizzare le ricerchè :D

Cmq altro errorino è il puntamento al database (punta dieretto al driver D:\), ma nn tutti hanno D:\ :p

Consiglio di usare il metodo App.Path che torna la path di dove sta il tuo exe...almeno cos' basta ch eil database lo dai in coppia con l'exe!!

Dai ora fai l'omocodia :) e correggi tutti gli errorini!

Aspetto con pazienza il risultato finale! ;)

leadergl
21-11-2003, 19:35
si per il fatto di D:\ già lo sapevo infatti ho già corretto, solo k nn l'ho postato xkè m'è mancata la corrente e poi sono sceso.....!!!!
Mo stasera ci lavoro un po e completo.....anche L'OMOCODIA!!!

Cmq x il database....beh ke ti devo dire....così l'ho saputo fare.....PER IL MOMENTO l'importante è che funziona!!1

matpez
21-11-2003, 19:46
Originariamente inviato da leadergl
....
Cmq x il database....beh ke ti devo dire....così l'ho saputo fare.....PER IL MOMENTO l'importante è che funziona!!1

Si ma ti ho spiegato, ti ho anche postato un esempio sull'utilizzo del database :mad: ....

Cmq l'importante nn è farlo funzionare....l'importante è farlo funzionare al meglio di come potrebbe funzionare :)

Per cui secondo me anzichè mandarmi un pezzo alla volta...mandami la versione finita al 100% :p

Aspetto con impazienza ;) :D ;)

leadergl
21-11-2003, 19:53
........cattivo..........:cry:

Ma non eri tu a dire che per i database si parlava di programmazione AVANZATA?????

Beh sono alle prime armi col VB........dovresti lodare il cielo che ce l'ho fatta.............per me k di DATABASE e VB nn so nulla o pochissimo (e qui m rif al VB nn ai database)....è già un miracolo essere riuscito a fare sta ricerca, poi capire quello che m'avevi mandato.......beh sinceramente?? NON CI SON RIUSCITO....mi mancano ancora troppe nozioni!!!

Cmq non preoccuparti, mi metterò con tanta pazienza ed imparerò!!!

Ma per il momento so farlo andare così!!!

Ho messo i controlli nel database, si sull'esistenza del comune che sulla presenza del database!!!

Ora faccio un attimo l'omocodia.....anche se questo mi porterà a modificare la FORM.....ci devo aggiungere la comboBox con la lista delle varie Omocodie......ed anche questo credo sarà un problema......ovvero FARLE USCIRE TUTTE E NON SOLO LA PRIMA NELLA COMBO!!!!

A dopo!!!

matpez
21-11-2003, 21:06
Non sono cattivo..voglio che impari bene :)

leadergl
21-11-2003, 22:18
CIAO, ho notato che ho un problema con la lettera di controllo.....eh si, perchè ho fatto un test sul mio Codice Fiscale e mi trovo K invece di U........e nn so spiegarmelo.....tutto il codice è corretto è solo l'ultima lettera (quella d controllo appunto) che è sballata!!!!


Ti posto il codice, magari tu riesci a vedere dove è il casino.....ah senti non sai nu modo per eliminare tutti sti SELECT CASE?!?! mi stanno un po sulle @@ !!!!!

Aspetto una risp, thanks

matpez
21-11-2003, 23:35
Ti posto proprio la versione di VBS di quelle pagine ASP

controlla se magari poi ho sbagliato io :D (anche se tutte le prove sono risultate corrette) :)

PS: così vedi come togliere i CASE

'calcolo lettera di controllo
Function CarattereControllo(sCFAux)

Dim nAux,nI

Aux=cInt(Aux)
'conta valori caratteri in posizione dispari
For nI = 1 To Len(sCFAux) Step 2
Select Case Mid(sCFAux, nI, 1)
Case "A", "0": nAux = nAux + 1
Case "C", "2": nAux = nAux + 5
Case "D", "3": nAux = nAux + 7
Case "E", "4": nAux = nAux + 9
Case "F", "5": nAux = nAux + 13
Case "G", "6": nAux = nAux + 15
Case "H", "7": nAux = nAux + 17
Case "I", "8": nAux = nAux + 19
Case "J", "9": nAux = nAux + 21
Case "K": nAux = nAux + 2
Case "L": nAux = nAux + 4
Case "M": nAux = nAux + 18
Case "N": nAux = nAux + 20
Case "O": nAux = nAux + 11
Case "P": nAux = nAux + 3
Case "Q": nAux = nAux + 6
Case "R": nAux = nAux + 8
Case "S": nAux = nAux + 12
Case "T": nAux = nAux + 14
Case "U": nAux = nAux + 16
Case "V": nAux = nAux + 10
Case "W": nAux = nAux + 22
Case "X": nAux = nAux + 25
Case "Y": nAux = nAux + 24
Case "Z": nAux = nAux + 23
End Select
Next

'conta valori caratteri in posizioni pari
For nI = 2 To Len(sCFAux) Step 2
If Mid(sCFAux, nI, 1) >= "A" And Mid(sCFAux, nI, 1) <= "Z" Then
nAux = nAux + (Asc(Mid(sCFAux, nI, 1)) - 65)
Else
nAux = nAux + (Asc(Mid(sCFAux, nI, 1)) - 48)
End If
Next

'calcolo carattere di controllo
CarattereControllo = Chr((nAux Mod 26) + 65)

End Function

leadergl
22-11-2003, 08:55
ok ho corretto, alcune delle cose che hai detto le avevo pensate stanotte.....tipo il fatto dello STEP 2........però ancora nn sapevo cm si faceva!!

Mentre il CASE "A", "0".....avevo provato a farlo ma erratamente, infatti provavo con CASE "A" OR "0" e mi dava errore, quindi rinunciai!!!

L'ultima perte invece m'è stata d'aiuto!!

leadergl
22-11-2003, 10:25
Hai dei consigli da darmi sull'OMOCODIA????

Non so se implementare nel Form principale una COMBObox, o una ListBox, oppure aggiungere nel menu la voce OMOCODIA che apre un'altro form di informazione con tutte le omocodie possibili, oppure si può implementare una comboBox in un MSGBOX??

Penso di si....credo basti creare una funzione che in uscita dia una combobox e fare:

MsgBox "Omocodie: " & nomefunzione

Si può fare??

Help.....non vorrei dover cambiare un po l'impaginazione del mio FORM principale.....

leadergl
22-11-2003, 10:29
ah un'altra cosa....ma se ho capito bene le omocodie possibili sono solo 7, giusto??

del tipo

SBT LCK 56B13 H444 C

che può diventare

SBT LCK 56B13 H44Q C
SBT LCK 56B13 H4QQ C
SBT LCK 56B13 HQQQ C
SBT LCK 56B1P HQQQ C
SBT LCK 56BMP HQQQ C
SBT LCK 5SBMP HQQQ C
SBT LCK RSBMP HQQQ C

GIUSTO???

matpez
22-11-2003, 12:49
Originariamente inviato da leadergl
ok ho corretto, alcune delle cose che hai detto le avevo pensate stanotte.....tipo il fatto dello STEP 2........però ancora nn sapevo cm si faceva!!

Mentre il CASE "A", "0".....avevo provato a farlo ma erratamente, infatti provavo con CASE "A" OR "0" e mi dava errore, quindi rinunciai!!!

L'ultima perte invece m'è stata d'aiuto!!

:)

matpez
22-11-2003, 12:53
Originariamente inviato da leadergl
Hai dei consigli da darmi sull'OMOCODIA????

Non so se implementare nel Form principale una COMBObox, o una ListBox, oppure aggiungere nel menu la voce OMOCODIA che apre un'altro form di informazione con tutte le omocodie possibili, oppure si può implementare una comboBox in un MSGBOX??

Penso di si....credo basti creare una funzione che in uscita dia una combobox e fare:

MsgBox "Omocodie: " & nomefunzione

Si può fare??

Help.....non vorrei dover cambiare un po l'impaginazione del mio FORM principale.....

Ti consiglio una list box con il carattere Courier New, almeno sono tutti lunghi uguali :D

matpez
22-11-2003, 13:00
Originariamente inviato da leadergl
ah un'altra cosa....ma se ho capito bene le omocodie possibili sono solo 7, giusto??

del tipo

SBT LCK 56B13 H444 C

che può diventare

SBT LCK 56B13 H44Q C
SBT LCK 56B13 H4QQ C
SBT LCK 56B13 HQQQ C
SBT LCK 56B1P HQQQ C
SBT LCK 56BMP HQQQ C
SBT LCK 5SBMP HQQQ C
SBT LCK RSBMP HQQQ C

GIUSTO???

No è sbagliato :oink: , perchè siccome tu devi cambiare i numeri dentro al CF fa una combinazione di 2^7 = 128, cioè cambi un numero e lasci invariato il resto, poi avanti così :)

Poi basta che controlli il sito che ti avevo dato e vedi che nn sono così pochi :D

NB: ogni codice fiscale nuovo (cioè con l'omocodia) ha una sua lettera di controllo ;)


PS: leggi anche le altre risposte sopra queste :oink:

leadergl
22-11-2003, 13:01
......MA COME SI FA A CARICARE UN'ALTRA FORM CON DEI PARAMETRI IN INGRESSO???


la devo far partire dal menu!!
File -> Omocodia

faccio

form2.show e vabbe mi apre la nuova form
ma se faccio:

form2(variabili).show
form2.show (variabili)

beh mi da errore, ma come cavolo si fa??

leadergl
22-11-2003, 13:07
senti sto fatto dell'OMOCODIA inizia a diventare un po lungo da fare....ti posto il codice così com'è adesso!!

Poi ovviamente voglio sapere tutto ciò che non va o che avresti fatto diversamente per migliorare STABILITA' , VELOCITA' e....e vabbe che ne so, qualche altra cosa cmq!!!

matpez
22-11-2003, 13:12
Non si possono passare le varibili ad un form all'altro a modello di parametri :)

O usi una varibile globale in un modulo, che vale per tutto il programma in VB (form comprese)

Oppure vai a leggere la label dovi stampi il codice fiscale originale (nel form2) --> ES: CF=form1.lblCF

Oppure usi la TAG dei form, cioè è uno spazio che ogni oggetto ha per mettere dentro quello che tu vuoi :D
ES:
prima di lanciare la form2 metti: form1.tag=CF
nella form 2 fai così: CF=form1.tag

matpez
22-11-2003, 13:15
Originariamente inviato da leadergl
senti sto fatto dell'OMOCODIA inizia a diventare un po lungo da fare....ti posto il codice così com'è adesso!!

Poi ovviamente voglio sapere tutto ciò che non va o che avresti fatto diversamente per migliorare STABILITA' , VELOCITA' e....e vabbe che ne so, qualche altra cosa cmq!!!

OK, te lo controllo....ci sentiamo sta notte, adesso esco :p

leadergl
22-11-2003, 15:20
ti posto anke l'eseguibile con le prime 7 omocodie....per le altre è un po un casino, xkè dovrei inserire un'altro ciclo FOR, conservarmi lo stato del codice fiscale prima di effettuare i cambiamenti delle omocodie........nu burdell !!!!

matpez
22-11-2003, 19:21
Ti posto la mia versione, ho levato il database perchè altrimenti nn ci stava nello zippo :)

leadergl
23-11-2003, 03:13
wa fico.....è simpatico ma.........sono convinto che poteva essere fatto....più semplice.....struttura un po complessa.......però molto bello!! Diciamo d'effetto!!!

Certo io non sono PER NIENTE a quel livello col VB.......ma pian piano imparo....almeno spero, oh io la buona volontà ce la metto....poi appena faccio un po di soldi compro un bel MATTONE di manuale e leggo, leggo, leggo.......magari anche assimilando :cool:

leadergl
23-11-2003, 03:13
dai diciamo che questo è stato fatto.....funziona, sarebbe da perfezionare ma..........................CHE NE DICI DI ASSEGNARMI UN'ALTRO ESERCIZIO????

matpez
23-11-2003, 12:52
Originariamente inviato da leadergl
Certo io non sono PER NIENTE a quel livello col VB.......ma pian piano imparo....almeno spero, oh io la buona volontà ce la metto....poi appena faccio un po di soldi compro un bel MATTONE di manuale e leggo, leggo, leggo.......magari anche assimilando :cool:

Ottimo!! D'altronde nessuno nasce con la camincia :)

matpez
23-11-2003, 13:02
Originariamente inviato da leadergl
dai diciamo che questo è stato fatto.....funziona, sarebbe da perfezionare ma..........................CHE NE DICI DI ASSEGNARMI UN'ALTRO ESERCIZIO????

Che ne dici di fare il gioco del TRIS :) , so che magari nn ti alletta molto, però fare o contro il computer oppure fare contro un'altra persona via rete! :p

leadergl
23-11-2003, 16:03
ma lo devo fare graficamente!?!?

Avrei una mezza idea......(sicuro errata e dispendiosa....poi mi suggerirai)

1 - Inserisco l'immagine del campo di gioco
2 - Su ogni casella posizione sia una X che un O e li setto entrambi come elementi non visibili
3 - Se uno clicca su una casella col mouse, a seconda del turno viene resa visibile una delle due figure, ovviamente dopo aver controllato che li non era già visibile l'altra!!


Che ne dici può andare??
Tanto alla fine sono 18 figure tra X e O ed un'altra per lo sfondo del campo....quindi nn ci vuole molta memoria.....penso si possa fare!
Alla fine sono solo una serie di IF, vari controlli sulle mosse, sulla VITTORIA ed il controllo sulla possibilità di poter fare altre mosse o sono invece state esaurite tutte le posibilità!!

Allora che ne dici così è ok??

matpez
23-11-2003, 16:38
No, sono 9 le X o le O

Cmq protesti usare dei command e mettere come immagine una O o una X a seconda di chi è il tuorno!!

Cmq tu dai comincia a faro...poi me o fai vedere! :)

leadergl
23-11-2003, 20:05
ma si può fare in modo che io ho da una parte una figura e poi lui me la posiziona nelle coordinate che io gli dico??

Così sarebbe meglio...o no?

matpez
23-11-2003, 22:59
Originariamente inviato da leadergl
ma si può fare in modo che io ho da una parte una figura e poi lui me la posiziona nelle coordinate che io gli dico??

Così sarebbe meglio...o no?

Secondo me ti conviene fare dei cmq e quando cliccki fai comparire l'immagine...! ;)

leadergl
24-11-2003, 00:20
cazzo giusto...........ops ca@@o (si scrive così vero?!?) nn c'avevo pensato è mooolto più semplice!!!

leadergl
24-11-2003, 16:32
ok ho cominciato da una 15 di minuti a lavorare sul gioco del TRIS e ti allego l'eseguibile e le immagini che ho creato!!!

A questo OVVIAMENTE mancano tutti i controlli per la vittoria, che devo trovare il modo più efficiente per inserire......e mica posso fare a mano tutte le combinazioni....eh no.....ci devo pensare un po al sistema da utilizzare!!

Cmq dimmi se l'aspetto grafico ti garba!

matpez
24-11-2003, 17:56
E dagli con sto D:\

Ma vuoi mettere App.Path & "\" il tuo file!!!!!!!!!!! :mad: :mad:

leadergl
24-11-2003, 20:46
....cavolo è vero, l'ho messo a sfera.gif ma per ics.gif mi son scordato ho messo solo "d:\ics.gif".........cmq ho corretto con (App.Path & "\ics.gif")

te lo riposto....cmq ti piace per il momento??
hai dei consigli da darmi sui controlli da mettere?

leadergl
24-11-2003, 20:49
senti visto che nn mi piace mettere le immagini in file separati e dargli l'estensione .gif non posso tipo chimarle

ics.trs
sfera.trs

cambiando solo l'estensione (quindi in realtà sn ancora .gif) e poi magari inglobarle in un unico file??

in modo da richiamarle con cose tipo...

immagini.dat,ics.trs

nn so se mi son spiegato.....

matpez
24-11-2003, 21:08
Originariamente inviato da leadergl
....cavolo è vero, l'ho messo a sfera.gif ma per ics.gif mi son scordato ho messo solo "d:\ics.gif".........cmq ho corretto con (App.Path & "\ics.gif")

te lo riposto....cmq ti piace per il momento??
hai dei consigli da darmi sui controlli da mettere?

Io aspetto a darti consigli quando sei già un po' avanti :p

matpez
24-11-2003, 21:09
Originariamente inviato da leadergl
senti visto che nn mi piace mettere le immagini in file separati e dargli l'estensione .gif non posso tipo chimarle

ics.trs
sfera.trs

cambiando solo l'estensione (quindi in realtà sn ancora .gif) e poi magari inglobarle in un unico file??

in modo da richiamarle con cose tipo...

immagini.dat,ics.trs

nn so se mi son spiegato.....

Sinceramente nn ho capito molto sai...

matpez
24-11-2003, 21:18
Guarda questo esempio.....vedi se ti garba :p

I file sono inclusi nel progetto...nn sono esterni :D

leadergl
24-11-2003, 21:19
creare tipo un file zippato, o come un cab!

e poi all'interno del VB richiamare uno dei file contenuto in questa specie di archivio..........

es:
FILE IMAGES.DAT
...................................ics.gif
...................................sfera.gif

il file images.dat contiene gli altri due file, ora volevo sapere se si può fare in modo che il VB vada a leggere il file ics.gif da dentro al file IMAGES.dat......si può fare??

Poi, che ne pensi del tris per il momento??

P.S: ......vedo che stai cominciando ad abbandonarmi.......

leadergl
24-11-2003, 21:22
nn mi funge il tuo programma....mi dice:


resurce with identifier '101' not found!!

matpez
24-11-2003, 22:55
Originariamente inviato da leadergl
P.S: ......vedo che stai cominciando ad abbandonarmi.......

Ho veramente tante cose da fare!!!!



No cmq per i file...l'esempio che ti ho postato è quello corretto, perchè il file RESOURCE contiene i tuoi file bmp (che ho convertito io) e così appunto senza avere file esterni tutto da programma va a caricare la tua immagine :)

Per il problema che mi hai detto del progetto, prova ad andare su OPZIONI -> ADD-IN MANAGER e seleziona "VB 6 RESOURCE EDITOR" Load/Unload e Load all'avvio!!

Poi chiudi VB e riapro il progetto!


PS: il tris mi piace...ma io lo voglio vedere almeno al 70%, nn passo per passo :cool:

leadergl
25-11-2003, 13:14
ma il gioco lo devo fare UMANO contro UMANO oppure UOMO contro MACCHINA???

.....sto iniziando a notare che è un po un casino sai!?!?

cmq lo farò

leadergl
25-11-2003, 14:36
ho quasi finito....OVVIAMENTE UOMO contro UOMO.....ma non mi effettua bene i controlli sulla vittoria in diagonale.....vedi un po tu dove sto sbagliando....

ti posto il codice

Private Function controllo() As Integer
' Verifica se la partita è giunta a termine e chi ne è il vincitore
' Saranno gli indici di righe e colonne della matrice
Dim i, j As Integer
Dim parita As Integer
Dim riga1 As Integer
Dim colonna1 As Integer
Dim diagonale1 As Integer
Dim riga2 As Integer
Dim colonna2 As Integer
Dim diagonale2 As Integer
Dim win As Boolean

'Imposta nessun vincitore
win = False

'Controlla se sono state esaurite le mosse
For i = 1 To 3
For j = 1 To 3
If (matrice(i, j) = 1) Or (matrice(i, j) = 2) Then
parita = parita + 1
End If
Next
Next

'Controlla se qualcuno ha vinto
diagonale1 = 0
diagonale2 = 0
For j = 1 To 3
riga1 = 0
riga2 = 0
colonna1 = 0
colonna2 = 0
If (matrice(j, j) = 1) And Not win Then
diagonale1 = diagonale1 + 1
If diagonale1 = 3 Then
win = True
End If
End If
If (matrice(4 - j, 4 - j) = 1) And Not win Then
diagonale2 = diagonale2 + 1
If diagonale2 = 3 Then
win = True
End If
End If
For i = 1 To 3
If (matrice(j, i) = 1) And Not win Then
riga1 = riga1 + 1
If riga1 = 3 Then
win = True
End If
End If
If (matrice(j, i) = 2) And Not win Then
riga2 = riga2 + 1
If riga2 = 3 Then
win = True
End If
End If
If (matrice(i, j) = 1) And Not win Then
colonna1 = colonna1 + 1
If colonna1 = 3 Then
win = True
End If
End If
If (matrice(i, j) = 2) And Not win Then
colonna2 = colonna2 + 1
If colonna2 = 3 Then
win = True
End If
End If
Next
Next
'Se sono piene tutte le caselle e non si è trovato un vincitore
'la partita viene dichiarata pari
If (parita = 9) And Not win Then
MsgBox "PARTITA PARI!!!! Nessun Vincitore", , "PAREGGIO"
controllo = 1
End If

'Se c'è un vincitore, a seconda di chi sarà il turno
'vede chi è il vincitore e lo stampa a video
If win Then
If stato Then
MsgBox "Ha vinto il Giocatore numero 2, COMPLIMENTI!!!", , "VITTORIA GIOCATORE 2"
Else
MsgBox "Ha vinto il Giocatore numero 1, COMPLIMENTI!!!", , "VITTORIA GIOCATORE 1"
End If
controllo = 2
End If

End Function




e ti posto anche l'eseguibile

leadergl
25-11-2003, 14:37
...ops che casino....scusa forse il codice è più leggibile cose:

matpez
25-11-2003, 16:03
Meglio che mi posti sempre il progetto...è un po' + facile controllare il tutto!!

Si cmq appena arrivo a casa te lo controllo :)

Il programma vorrei che fosse UOMO vs UOMO, UOMO vs PC, UOMO vs UOMO in rete :) :) ;) ;)


GL :oink:

leadergl
25-11-2003, 19:59
questo è tutto il codice in VB + le immagini + l'eseguibile

è completo UOMO contro UOMO

matpez
26-11-2003, 01:50
Originariamente inviato da leadergl
questo è tutto il codice in VB + le immagini + l'eseguibile

è completo UOMO contro UOMO

Allora...controlla bene i controlli per la vittoria, perchè la diagonale principale la rivela, la secondaria no :)

Altra cosa, chiama i bottoni con un nome unico e metti nella proprietà Index un numeretto, questo numeretto è l'indice del comando. Così facendo anzichè creare 9 precedure per ogni Command basta che ne crei una e come parametro lui passerà Index, che sarà proprio il bottone che hai premuto.

Esempio per quello che tu usi per svuotare il tutto è così:
'riporta allo stato iniziale le figure del campo
Command1.Picture = LoadPicture()
Command2.Picture = LoadPicture()
Command3.Picture = LoadPicture()
Command4.Picture = LoadPicture()
Command5.Picture = LoadPicture()
Command6.Picture = LoadPicture()
Command7.Picture = LoadPicture()
Command8.Picture = LoadPicture()
Command9.Picture = LoadPicture()

Con il sistema a indici lo porti così

For nI=1 to 9
cmdCaselle(nI).Picture = LoadPicture()
Next

Molto + comodo no?


PS: ti riposto il codice...guarda quello che ho modificato....naturalmente inerente agli indici, i resto nn l'ho toccato :D

leadergl
26-11-2003, 09:31
è un ottimo consiglio quello che mi hai dato........ma mi scombussola un po tutto adesso..........

Cmq non c'è un modo per fare in modo che gli ARRAY comincino a contare da 1 e non da 0????

Ah ho anche risolto il problema del vincitore in diagonale, era una cazzata e che non c'avevo proprio pensato........cmq PASSIAMO AL GIOCO IN RETE che mi attizza un casino.............solo che..........................NON SO NEANCHE DA DOVE SI COMINCIA :cry:


HELP.....:mc:

leadergl
26-11-2003, 14:20
ok ho risolto tutto, ho anche implementato i tuoi consigli senza stravolgere niente!!!

Ho inserito la possibilità di scegliere la modalità di gioco!!
Ora devo "solo" implementare le varie modalità!!!

Per quella contro il computer è ok faccio benissimo da solo, ma per quella tramite rete....eh..mmm...beh come t'ho già detto NON SO NULLA di come si fa........mi serve il tuo aiuto...

matpez
26-11-2003, 14:36
Originariamente inviato da leadergl
ok ho risolto tutto, ho anche implementato i tuoi consigli senza stravolgere niente!!!

Ho inserito la possibilità di scegliere la modalità di gioco!!
Ora devo "solo" implementare le varie modalità!!!

Per quella contro il computer è ok faccio benissimo da solo, ma per quella tramite rete....eh..mmm...beh come t'ho già detto NON SO NULLA di come si fa........mi serve il tuo aiuto...

Hai visto il progetto modificato con gli indici, nn so dove tu abbia scombussolato tutto....:p

Cmq vediamo, gli indici puoi farli partire da 0, i vettori in VB a differenza del pascall o di C/C++ per esempio...quando tu inizializzi un vettore del tipo Vet(10) hai a disposizione 11 posizioni da 0 a 10, poi fallo partire ed arrivare come vuoi to, o da 0 a 9 o da 1 a 10, è indifferente...dipende da cosa stai facendo!! :)

Per il gioco in rete nn è difficilissimo, infatti secondo me ti consiglio di fare il gioco contro il computer...che a prima vista nn sembra difficile, ma qui devi mettere tutto il tuo impegno e ingegno per far si che il computer capisco il gioco e controbatta al meglio la tua idea umana...

...cioè, siccome il gioco del tris è veramente assurdo, cioè solo grazie a una disattenzione si può perdere (lasciamo stare della regola di chi comincia prima) lo scopo del tuo tris sarà di pareggiare sempre, quando il tuo tris pareggierà con tutti i giocatori e addirittura con quelli meno attenti vincerà allora questa modalità sarà finita :)

PS: siccome qui nn c'è d conoscere il linguaggio, io nn ti darò una mano per questa parte, se nn conosci qlc funzione o qlc parte di VB io ti aiuto, per l'algoritmo di attacco/difesa è tutto in mano tua :muro:

Una valta ultimana questa parte, molto divertente...passiamo alla aprte di gioco in rete, che sinseramente devo dirti la verità è molto ma molto + facile di quella che stai per affrontare, perchè nelle cose in rete il trucco è solo mandare e ricevere informazioni da un pc all'altro formattati in maniera tale che tu sai cosa devi affrontare :D

leadergl
26-11-2003, 14:52
alla fine l'index dei pulsanti l'ho fatto partire da uno, e tutto funziona bene adesso!!!

Ora comincio a lavorare sul gioco contro il computer.........che ho già notato che è un casino.....

hai qualche consiglio??

matpez
26-11-2003, 15:21
Originariamente inviato da leadergl
alla fine l'index dei pulsanti l'ho fatto partire da uno, e tutto funziona bene adesso!!!

Ora comincio a lavorare sul gioco contro il computer.........che ho già notato che è un casino.....

hai qualche consiglio??

L'unica cosa che voglio dirti è di implementare un qlc che faccia almeno vedere se parti tu o il pc :p

Per il resto divertiti un po', altrimenti scusa....DOV'E' IL BELLO DI PROGRAMMARE!!!!!!! :) :D :)

leadergl
26-11-2003, 16:43
...........sono due ore che sto dietro sto coso.......mi sto iniziando ad esaurire.......mai possibile che non riesco ad elaborare NE MENTALMENTE ne SU CARTA un algoritmo che sia degno di un gioco intelligente?!!?!

Per il fatto dei turni stavo pensando di mettere delle specie di spie luminose in alto a tutto che a seconda di chi tocca si accendono o diventano invisibili!!

E' semplice......per il gioco col computer E' UN CASINO......tu vuoi vedermi morto lo so.......speriamo bene

matpez
26-11-2003, 17:43
Originariamente inviato da leadergl
E' semplice......per il gioco col computer E' UN CASINO......tu vuoi vedermi morto lo so.......speriamo bene

Chi io no...voglio solo che prendi domestichezza con il linguaggio e ti do cose difficili, altrimenti è facile :)

Dai dai che quando l'hai finito il sei iper soddisfatto :cool:

PS: io avevo iniziato in C++ questo programma, ma poi per cause esterne...vedi una visitina in ospedale inaspettata nn l'ho mai completato, perchè al ritorno c'era già altro da fare :(

Per cui sinceramente anche volessi dovrei anche io pensare a qlc se voglio darti una mano, ma siccom io sono veramente cattivissimo...fai da solo l'algoritmo, come ti ho giò detto ti aiuto solo per le cose del linguaggio :oink:

leadergl
26-11-2003, 19:46
questo è il codice completo del mio programma

ti aggiornerò costantemente sugli sviluppi......hola

matpez
26-11-2003, 20:19
:(

leadergl
26-11-2003, 21:18
non capisco come sia potuto capitare......cmq guarda un po??

matpez
26-11-2003, 22:45
Originariamente inviato da leadergl
questo è il codice completo del mio programma

ti aggiornerò costantemente sugli sviluppi......hola

Mi piace come sta venendo! :p

matpez
27-11-2003, 21:22
Ti volevo solo avvertire che per il week end nn ci sono...torno domenica sera!!

Buon Lavoro :p

leadergl
28-11-2003, 10:58
non ci sto capendo più niente, ho provato a darli un'intelligenza STUPIDA, praticamente si metteva nella prima casella vuoto.........MA poi non riuscivo ad implementarlo nel gioco..................................come faccio!??!?!?!?! AIUTO:mc:

a2000
28-11-2003, 11:43
devi usare la stessa logica che fa muovere l'uccello verso la patata ! :D

(e non è uno scherzo)

maxithron
28-11-2003, 11:53
[OT]

a2000 sto cercando di mandarti un pvt ma hai la mailbox piena

fine [OT]

a2000
28-11-2003, 12:41
svuotata :)

leadergl
28-11-2003, 15:56
ehi ehi siete pregati di non inserire commenti che non riguardino il thread...........delle mail-box della gente non mi frega niente, sto cercando di imparare!

Ed ogni aiuto è ben accetto, ma altre sciocchezze NO!!! :D
Grazie mille!!!


ah....siate costruttivi

leadergl
28-11-2003, 15:56
cmq per l'implementazione ho risolto..........devo "SOLO" dotarlo di INTELLIGENZA...............speriamo......

a2000
28-11-2003, 17:13
ma ... vuoi degli indizi .... o vuoi sapere subito chi è l'assassino ?

leadergl
29-11-2003, 10:23
ecco i piccolissimi progressi........ho inserito correttamente la modalità di gioco UMANO VS CPU...........per il momento la CPU genera mosse casuali........quindi è STUPIDO.....cmq già è una cosa.....devo implementargli l'intelligenza ora!!!


Ti allego l'eseguibile

a2000
29-11-2003, 11:54
http://www.nlm.nih.gov/hmd/frankenstein/IIIB9.jpg

leadergl
29-11-2003, 14:05
allora.........piccoli progressi, l'ho dotato di "Intelligenza" è diventato più complicato fare TRIS e quindi vincere, MA se ha la possibilità di vincere e contemporaneamente mettere una pedina tra due dell'avversario, beh SCEGLIE LA SECONDA.........il che è sbagliato!!!!!!!

Cmq ci lavorerò sopra...e migliorerò!!!

leadergl
29-11-2003, 14:45
ok ci siamo ho risolto questo piccolo problemino ed ho implementato anche delle mosse decisamente più intelligenti in fase di attacco.................PERO' ancora non è impossibile vincere!!!!!!

L'unica cosa che non mi soddisfa è che volevo creare un algoritmo ricorsivo moooolto intelligente!! Mentre per il momento solo una serie abbastanza lunga i IF.............che NON MI PIACCIONO PER NIENTE ne dal punto di vista estetico che di programmazione!!!


Cmq......cercherò di migiorarlo ancora mentre attendo il tuo ritorno......ciao matpez

a2000
29-11-2003, 18:31
ti basta una logica da 7 istruzioni.

leadergl
30-11-2003, 02:30
ovvero....

a2000
30-11-2003, 08:47
... non ti voglio togliere il gusto.
anche perchè dopo arriva matpez e si arrabbia. :p

ma ti consiglierei di mettere da parte il codice e pensare a quali sono le regole con cui giochi e se queste regole si possono ridurre a una.
perchè per esempio si cerca sempre di occupare la casella centrale ?
forse perchè è quella che vale di più ....
e una casella in linea con altre due occupate dallo stesso segno, quanto vale ? ancora di più.

è quello che si fa, con le dovute differenze, nel gioco posizionale degli scacchi
il gioco posizionale, basato sull'assegnazione di valori a pezzi e caselle, è una impostazione euristica di facile implementazione.


un'altro approccio è riconducibile al gioco cosiddetto "combinatorio" che per casi semplici consiste nel collegare gli stati/nodi del gioco (nel caso la disposizione delle pedine) con le mosse/rami che permettono la transizione tra uno stato e l'altro.
Una volta costruito questo grafo si determina un percorso che porta dallo stato attuale a quello di vittoria (o patta).
ma non sono 7 istruzioni ....

a2000
30-11-2003, 08:58
comunque la grafica è carina :)

leadergl
30-11-2003, 12:36
ORA E' IMPOSSIBILE VINCERE!!!!!!!!!

E' Tutto ok, ho risolto tutto!
Potrei anche impostare dei livelli di difficoltà...........ma questo lo si può fare in qualsiasi momento, ORA VORREI METTERE LA POSSIBILITA' DEL GIOCO IN RETE................da dove si parte?? che si deve fare?? cosa devo imparare per farlo????


E vai.....ci siamo quasi...

Allego il gioco compilato....

leadergl
30-11-2003, 21:13
Ho messo anche i livelli di difficoltà.............ora manca solo il gioco in rete..............MATPEZ MA QUANDO TORNI??????

matpez
30-11-2003, 21:42
Originariamente inviato da leadergl
Ho messo anche i livelli di difficoltà.............ora manca solo il gioco in rete..............MATPEZ MA QUANDO TORNI??????

TORNATO! :p

matpez
30-11-2003, 21:47
BRAVO! vedo che a2000 nella mia piccola assenza ti ha dato una mano :)

Ti allego una cosuccia che ti aiuterà a capire il gioco in rete...

Se hai problemi...chiedimi pure!! :p

matpez
30-11-2003, 22:52
Originariamente inviato da a2000
... non ti voglio togliere il gusto.
anche perchè dopo arriva matpez e si arrabbia. :p

Sai che in fondo in fondo io TVB :oink:

leadergl
01-12-2003, 06:14
diciamo che a2000 su 10 messaggi che ha scritto 9 erano ca@@ate per dar fastidio.......cmq, ben tornato!!!

Ora mi scarico in file allegato e oggi pomeriggio, dopo l'univ, me lo vedo

a2000
01-12-2003, 09:26
Originariamente inviato da matpez
Sai che in fondo in fondo io TVB :oink:

lo so: siamo tutti e due (tre ?) del partito della prugna ! :oink:

matpez
01-12-2003, 13:06
Allora come ti sembra la connessione via rete :confused:

leadergl
01-12-2003, 13:40
..ok.....allora più o meno ho capito come funziona....è semplice.
In pratica il CLIENT:

1 - decide a chi connettersi attraverso l'ip o il nome
2 - apre la porta di comunicazione
3 - si connette
4 - invia il pacchetto con SendData
5 - imposta il formato dei pacchetti da ricevere
6 - riceve i dati con GetData
7 - associa i dati a qualche elemento del programma tipo textbox

Il SERVER invece:

1 - verifica se c'è un'altra connessione aperta, la chiude e ne apre un'altra
2 - apre la porta di comunicazione
3 - si mette in attesa di dati con LISTEN
4 - trasmette dati con SendData
5 - riceve dati con GetData


dovrebbe essere tutto qui, vero?? capito bene??
ma............come lo implemento adesso nel mio programmino???
E' QUESTO CHE MO DEVO CAPIRE!!!!

leadergl
01-12-2003, 13:42
ah mi sono anche procurato un libro sul VB6 dalla mia univ.....
si chiama:

Il Manuale di Visual Basic 6

di Brian Siler e Jeff Spotts

Jackson Libri!!!!


L'ho preso perchè tanto con la tessera della biblioteca è GRATIS....quindi posso spulciarlo un po, cmq come è come libro??
SONO 750 PAGINE....!!!! MADRE!!!!

matpez
01-12-2003, 14:51
Originariamente inviato da leadergl
..ok.....allora più o meno ho capito come funziona....è semplice.
In pratica il CLIENT:

1 - decide a chi connettersi attraverso l'ip o il nome
2 - apre la porta di comunicazione
3 - si connette
4 - invia il pacchetto con SendData
5 - imposta il formato dei pacchetti da ricevere
6 - riceve i dati con GetData
7 - associa i dati a qualche elemento del programma tipo textbox

Il SERVER invece:

1 - verifica se c'è un'altra connessione aperta, la chiude e ne apre un'altra
2 - apre la porta di comunicazione
3 - si mette in attesa di dati con LISTEN
4 - trasmette dati con SendData
5 - riceve dati con GetData


dovrebbe essere tutto qui, vero?? capito bene??
ma............come lo implemento adesso nel mio programmino???
E' QUESTO CHE MO DEVO CAPIRE!!!!

Si sulla connessione diretta è giusto, in pratica accetta la connessione e passa dallo stato Listen allo stato Connected!!

Ora secondo me dovresti fare un form che richiede in ingresso l'ip del server (e soprattutto di chi fa da server e di chi fa da client e li lanci la form che ti interessa), poi uno si mette in attesa (il server) e l'altro si connette, se tutto va bene cominci il gioco!! :p

matpez
01-12-2003, 14:52
Originariamente inviato da leadergl
ah mi sono anche procurato un libro sul VB6 dalla mia univ.....
si chiama:

Il Manuale di Visual Basic 6

di Brian Siler e Jeff Spotts

Jackson Libri!!!!


L'ho preso perchè tanto con la tessera della biblioteca è GRATIS....quindi posso spulciarlo un po, cmq come è come libro??
SONO 750 PAGINE....!!!! MADRE!!!!

non lo conosco :(

matpez
01-12-2003, 20:16
Ma che fine hai fatto :confused:

leadergl
01-12-2003, 20:39
We scusa, lo so sono scomparso.....è che sono appena tornato a casa!!!
C'ho un mal di testa oggi!!

Quindi dovrei operare in questo modo:

Creo una FORM e magari DUE MODULI;
nella form ci inserisco la parte dove si decide chi fa da Client e chi da server, con la relativa immissione dell'indirizzo IP, mentre nei moduli metto:

nel primo la parte di codice relativa al CLIENT e nel secondo quella relatia al SERVER in questo modo all'interno dalla form col gioco che ho già fatto basta che inserisco qualche IF e qualche chiamata ad uno dei moduli, giusto???

cmq devo ancora entrare nell'ottica rete....ma il sonno mi porterà consiglio e domani mattina risolvo tutto.....cmq è giusto il ragionamento??

matpez
01-12-2003, 21:07
In pratica basta che mandi una stringa formattata in questa maniera....

"#,1" oppure "#,2"

Dove # sta per il comando che tu riconosci come stringa che metti che esegui il bottono 1 o 2

cioè nella funzione DataArrival fai una cosa del genere:

dim sData as string
dim vVet as variant

wskRete sData

vVet=split(sData,",")

Select case vVet(0)
case "@"
'qui magari gestisci altro
case "#"
'qui lanci la funzione che gira il simbolo che rappresenta l'avversario
'es: call GiraSimbolo(vVet(1))
end select


Spero di essere stato chiaro :p

leadergl
01-12-2003, 21:22
sinceramente non c'ho capito niente.............(ricorda che sto imparando....mica sono un genio....):O

leadergl
01-12-2003, 21:36
a me come informazione mi servirebbe che mi venga restituito il numero (index) della casella premuta dall'avversario

Però devo anche fare il modo che il gioco SIA IN ATTESA della mossa dell'avversario, cioè nn posso fare che muovo a cazzo di cane, quando mi pare e piace.....un turno alla volta insomma!!!

Solo che ancora c'ho le idee poco chiare........magari è una fesseria farlo, ma se non faccio ordine in testa è inutile........cmq ti posto il codice sorgente del mio programma e mi dici che te ne pare fin qui....t'ho messo anche l'eseguibile!!!!!


Dimmi che te ne pare mi raccomando....e......e......e per favore....si cioè....dai su.........e nn darmi brutte notizie...:cry:

matpez
01-12-2003, 21:38
Con l'esempio magari lo capisci meglio :)

matpez
01-12-2003, 21:57
Ti faccio alcune annotazione (da buon prof :) ):

Private Sub livello_Click(Index As Integer)

' Imposta i vari livelli di difficoltà
If Index = 1 Then
diff = 1
Call nuovo_Click(1)
Else
If Index = 2 Then
diff = 2
Call nuovo_Click(1)
Else
If Index = 3 Then
diff = 3
Call nuovo_Click(1)
End If
End If
End If

End Sub
DIVENTA COSì
Private Sub livello_Click(Index As Integer)

' Imposta i vari livelli di difficoltà
diff = Index
Call reset

End Sub

-----------------------------------------------------------

If win Then
If stato Then
MsgBox "Ha vinto il Giocatore numero 2, COMPLIMENTI!!!", , "VITTORIA GIOCATORE 2"
Else
MsgBox "Ha vinto il Giocatore numero 1, COMPLIMENTI!!!", , "VITTORIA GIOCATORE 1"
End If
Call reset
End If

DIVENTA COSì
MsgBox "Ha vinto il Giocatore numero " & IIf(stato, "2", "1") & ", COMPLIMENTI!!!", , "VITTORIA GIOCATORE " & IIf(stato, "2", "1")


-----------------------------------------------------------
If matrice(x, y) = 0 Then
If stato Then
matrice(x, y) = 1
Command(Index).Picture = LoadPicture(App.Path & "\sfera.gif")
'azzera i colori dei giocatori
Shape1.FillStyle = 1
Shape2.FillStyle = 0
Else
matrice(x, y) = 2
Command(Index).Picture = LoadPicture(App.Path & "\ics.gif")
'azzera i colori dei giocatori
Shape1.FillStyle = 0
Shape2.FillStyle = 1
End If
stato = Not stato
Else: MsgBox "Casella già premuta"
End If
DIVENTA COSì
If matrice(x, y) = 0 Then
matrice(x, y) = IIf(stato, "1", "2")
Command(Index).Picture = LoadPicture(App.Path & IIf(stato, "\sfera.gif", "\ics.gif"))
'azzera i colori dei giocatori
Shape1.FillStyle = IIf(stato, "1", "0")
Shape2.FillStyle = IIf(stato, "0", "1")
stato = Not stato
Else: MsgBox "Casella già premuta"
End If

Molte cose sono solo per estetica e proprietà del codice, il primo è proprio ottimizzazione! :)

leadergl
01-12-2003, 22:05
ca@@o c'hai ragione............è vero....vabbè che sono sicuro che TANTISSIME COSE si possono migliorere........ciò che non mi piace proprio sono tutti quegli IF per l'intelligenza del computer......ma proprio non sapevo come fare altrimenti.....c'ho pensato un casino...ma alla fine mi sono arreso, credo di non avere le conoscenze adeguate!!

Spulciando in internet (siti di università) ho trovato cose assurde sulla scissione della matrice in vari alberi con rami figli e con assegnato un determinato livello di utilità alle mosse a seconda di tante cose.....ma le mei conoscenze in merito ad AI sono praticamente nulle!!!!!

Con gli IF invece sapevo farlo dall'inizio, ma volevo evitarlo...quindi se hai consigli...beh...

matpez
01-12-2003, 22:07
Va be per adesso va bene così dai..

Vai sulla parte Rete che ti manca poco a finirlo :) :)

leadergl
01-12-2003, 22:12
da quello che ho capito la funzione IIf funziona così:


nuova_variabile = IIf(variabile_booleana, valore_vero, valore_falso)

in pratica se la variabile_booleanda è vera NUOVA_VARIABILE assume il valore posto a VALORE_VERO, mentre se è falsa il valore posto a VALORE_FALSE

giusto??

thanks per le ottimizzazioni

matpez
01-12-2003, 22:21
Originariamente inviato da leadergl
da quello che ho capito la funzione IIf funziona così:


nuova_variabile = IIf(variabile_booleana, valore_vero, valore_falso)

in pratica se la variabile_booleanda è vera NUOVA_VARIABILE assume il valore posto a VALORE_VERO, mentre se è falsa il valore posto a VALORE_FALSE

giusto??

thanks per le ottimizzazioni

Si si è corretto :)

leadergl
01-12-2003, 22:24
io non reggo più vado a nanna.....oggi è stata una giornata esageratamente stancante e stressante.......ci si sente domani ed ancora grazie :p

matpez
01-12-2003, 22:33
Originariamente inviato da leadergl
io non reggo più vado a nanna.....oggi è stata una giornata esageratamente stancante e stressante.......ci si sente domani ed ancora grazie :p

Prego :)

leadergl
02-12-2003, 13:28
mi spiace ammetterlo ma...........non ne sono capace......ci sto capendo poco, nel senso che non so come implementarlo nel gioco..........mi servono più informazioni.....e qualche spinta...HELP

:mc:

matpez
02-12-2003, 15:37
Dissi così anche io la prima volta che affrontai da solo la rete senza nemmeno un progetto di esempio ma con solo il manuale cartaceo che bene o male spiegava alla buona il tutto!!

Ci sono stato una giornata intera a studiare tutte le cose e la maniera di affrontarla al meglio...dopo molta analisi sono giunto ad una conclusione e sono andato a letto veramente soddisfatto!!

Dai nn demordere...vedrai che ci riesci...il concetto nn è complicato è solo che magari devi creare qlc funzione in +......per esempio quando fai click sul pulsante e hai tutta la procedura di visualizzazione immagine, la puoi mettere in una procedura con un parametro (l'indice)...quando ti arriva la richiesta dalla rete che ha premuto il tasto allora laci quella procedura con l'indice passato per parametro!!

Quando uno dei due vince...passa all'altro il dato, ogni click sui bottoni passa il dato all'altro!!

L'importante è che formatti in maniera corretta i dati che viaggiano e dato che il server ed il client sono tuoi e nn dipendono da informazini esterna li formatti a tuo piacimento!

Come hai notato la funzione SPLIT divide una stringa e la mette in un vettore, in questa maniera il vettore con indice 0 contiene un carattere che utilizzerai nel Case per gestire l'evento, nn so # click sul bottone, @ nome di chi si è connesso, etc etc...
Nel vettore con indice 1 hai una stringa che se passa il carattere # è l'indice del bottone premuto, se passa @ il nome del giocatore e così via...

Spero di essere stato + chiaro....voglio che ti sforzi al massimo...se proprio ma dico PROPRIO sei in difficoltà chiedi ancora una mano :)

leadergl
03-12-2003, 12:01
sto fatto della rete mi sta cominciando un po ad infastidire.....................:muro: :muro: :muro:

matpez
03-12-2003, 13:11
Originariamente inviato da leadergl
sto fatto della rete mi sta cominciando un po ad infastidire.....................:muro: :muro: :muro:

Prova qlc oretta ancora...se entro le 18 nn ci riesci...allora ti do una mano :)

leadergl
03-12-2003, 15:10
So cosa dovrei fare per il gioco in rete......ma non mi vengono IDEE su come inserirlo nel mio programmino!!!!
Guarda,
PROCEDURA CLIENT

tcpClient.RemoteHost = "127.0.0.1"
tcpClient.RemotePort = 13982
tcpClient.Connect

tcpClient.SendData outputData
tcpClient.GetData inputData


dove outputData ed inputData devono essere gli indici del pulsanti da premere nel gioco!!!


PROCEDURA SERVER

tcpServer.LocalPort = 13982
tcpServer.Listen
'qui introduco prima qualche controllo sulla connessione, tipo se già ne esiste una
tcpServer.Accept requestID
tcpServer.SendData inputData
tcpServer.GetData outputData

qui outputData ed inputData sono associati agli inversi del Client.....(anke se non avrebbe importanza poichè sono sempre degli INTERI)

cmq tutto qui....giusto? alla fine è una cazzata, in più devo:

1 - Implementare entrambi i codici (client e server) nel programma
2 - Fare in modo che quando ci sia richiesta di gioco in rete il programma verifichi prima se ci sia una richiesta in attesa di QUESTO gioco su QUELLA porta, se si automaticamente si imposta come SERVER, altrimenti come CLIENT e propone una connessione....................

e fin qui è ok.......ma ancora non ho mentalmente chiaro come fare poi interagire il tutto con i miei pulsantini nel programma.....cazzarola......

cmq che te ne pare?!? Apprendo in fretta eheh......

leadergl
03-12-2003, 15:32
Option Explicit
inputData As Integer
tipo_connessione As String

Private Sub Connetti()

If "già c'è una connessione" Then
tcpClient.RemoteHost = "127.0.0.1"
tcpClient.RemotePort = 13982
tcpClient.Connect
tipo_connessione = "client"
Else
tcpServer.LocalPort = 13982
tcpServer.Listen
tcpServer.Accept requestID
tipo_connessione = "server"
End If

End Sub


Private Sub Invia(index As Integer)

Select Case tipo_connessione
Case "client": tcpClient.senddata index
Case "server": tcpServer.senddata index
End Select

End Sub


Private Sub Ricevi()

Select Case tipo_connessione
Case "client": tcpClient.GetData inputData
Case "server": tcpServer.GetData inputData
End Select

End Sub

leadergl
03-12-2003, 15:38
ora credo che.....la parte ricevi devo inserirla nel blocco

Command_Click(index as integer) del mio programma

ma all'inizio, mentre la parte invia alla fine!!!

ed inoltre dovrei inserire un comando che metta in attesa il mio programma della mossa dell'altro........


o forse no..........aspè.....forse a questo già ci pensa.....no no...pensavo k già lo facesse il programma grazie alla variabile booleana STATO, ma no......allora si, mi serve un comando che da inserire in RICEVI che praticamente lo metta in attesa di ricevere le informazioni dall'altro computer....

ok, giusto??

help...

leadergl
03-12-2003, 15:43
ok

sckConnectionPending è questa che vede se ci sono richieste di connessione giusto??


quindi l'IF di prima diventa


IF sckConnectionPending then
"client"
else
"server"

end if


giusto??

sto impazzendo, capendo e sclerando tutto insieme....e per di più m'è venuta l'influenza

leadergl
03-12-2003, 15:49
ok ho anke capito che non c'è bisogno di fare distinzione tra

INVIO CLIENT o SERVER

e

RICEVI CLIENT o SERVER

perchè

tcpClient e tcpServer sono nomi che abbiamo dato noi al controllo Winsocket

quindi posso eliminare il SELECT CASE, giusto??

we ma fatti sentire....mi sto rincoglionendo

matpez
03-12-2003, 16:47
Dai che sei sulla buona strada! :)

leadergl
03-12-2003, 17:03
Option Explicit
Dim inputData As Integer

Private Sub Connetti()

If sckConnectionPending Then
tcp.RemoteHost = "127.0.0.1"
tcp.RemotePort = 13982
tcp.Connect
Else
tcp.LocalPort = 13982
tcp.Listen
tcp.Accept requestID
End If

End Sub


Private Sub Invia(index As Integer)

tcp.senddata index

End Sub


Private Sub Ricevi()

tcp.GetData inputData

End Sub

allora...così che ne dici va???
ah un'altra cosa...

Private Sub Command_Click(Index As Integer)
Dim x, y As Integer


If matrice(x, y) = 0 Then
.............(il codice vario)
End If

Call controllo

If mode = "cpu" Then Call computer
if mode="rete" then call invia(index)

End Sub

allora che ne dici va così??
solo che il comando per ricevere???

leadergl
03-12-2003, 17:06
si lo so, aspè....così ti incasino e basta....ti mando il codice

leadergl
03-12-2003, 17:08
anzi....così dovrebbe andare.....fammi sapere!!

matpez
03-12-2003, 18:22
E' molto semplice....manca molte cose...ma guarda se così capisci meglio!

leadergl
03-12-2003, 19:06
vabbe...qualche ottimizzazione qua e la........ma ero vicino.....vero??

che dici funzionava come ho detto io??

matpez
03-12-2003, 19:40
Originariamente inviato da leadergl
che dici funzionava come ho detto io??

Mica tanto!

Perchè devi pensare in maniera ascincrona, cioè il server ha un pezzo di codice e il client ha un pezzo di codice!

La ricezione è la stessa per entrambi e l'invio uguale :)

leadergl
03-12-2003, 21:45
mi dici perchè cos' non funziona???

ho visto il tuo codice e ti ringrazio.....ma vorrei capire perchè così non va??

leadergl
03-12-2003, 21:58
a me serve che il programma capisca da solo se deve funzionare da CLIENT o da SERVER

leadergl
03-12-2003, 22:35
ok, sto iniziando a capire ma...............ma mi manca qualcosa!!

Ho fatto anche col mio programma, so k alla fine è quasi uguale...ma solo così si può fare, non ci sono molte altrnative....ma perchè ogni mossa che faccio mi da


"CASELLA GIA' PREMUTA"

???

leadergl
03-12-2003, 22:37
il mio codice è questo allegato

leadergl
03-12-2003, 23:07
come si fa a fare un if cosi??

IF KEYPRESS = "tasto invio" then
call ....

end if

come gli si dice il taso invio??

leadergl
03-12-2003, 23:30
per farti vedere che ho finalmente capito come funziona la rete...eccoti qua una semplice chat

matpez
04-12-2003, 01:14
Originariamente inviato da leadergl
come si fa a fare un if cosi??

IF KEYPRESS = "tasto invio" then
call ....

end if

come gli si dice il taso invio??

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = vbKeyReturn Then

End If

End Sub

matpez
04-12-2003, 01:17
Originariamente inviato da leadergl
per farti vedere che ho finalmente capito come funziona la rete...eccoti qua una semplice chat

BRAVO!! :)

Ora applicalo al tuo programma!!

Io ti consiglio di fare scegliere se uno vuole fare da client o da server :p

Dai dai che sei vicino!

PS: se noti nel mio codice ti ho racchiuso i bottoni in un frame...cosi ogni cambio di turno quando vai a cambiare il colore (rosso/blu) gestici se abilitare o disabilitare il frame..così tutti i bottoni si disabilitano dato che sono contenuti in un oggetto nn "toccabile" ;)

leadergl
04-12-2003, 10:16
ho fatto ma non riesco a capire perchè mi da CASELLA GIA PREMUTA.....in continuazione, appena faccio la prima mossa!!!

leadergl
04-12-2003, 10:22
MA CHE IDIOTA CHE SONO..............ci sono arrivato!!!

Se io creo una sola SUB per il click delle caselle e la richiamo ogni volta che mi arrivano dati in avvio e poi questa a sua volta invia dati si crea un ciclo ininterrotto di dato inviati e ricevuti MA CHE RIGUARDANO SEMPRE LO STESSO COMANDO, e di conseguenza ecco il "casella già premuta"..............ah finalmente ci sono arrivato ed ho anche corretto il mio programmino!!!

Ora funziona tutto perfettamente, thanks..........

NE FACCIAMO UN'ALTRO?????? :O :) :cool: :p :D

leadergl
04-12-2003, 10:29
la chat è fichissima......ma mi sta sempre sulle ball sto fatto che devo scegliere CLIENT e SERVER.......voglio che uno appena apre il programma possa vedere se c'è una richiesta di connessione, se si allora la accetta o rifiuta, se NO ne crea una!!!


che strada si segue per fare questo??


(ti vorrei allegare la chat ma occupa 28Kb compressa e non me la fa mettere

leadergl
04-12-2003, 11:32
ecco l'ho fatta entrare in 25k.......guarda ti piace??

matpez
04-12-2003, 11:55
Originariamente inviato da leadergl
la chat è fichissima......ma mi sta sempre sulle ball sto fatto che devo scegliere CLIENT e SERVER.......voglio che uno appena apre il programma possa vedere se c'è una richiesta di connessione, se si allora la accetta o rifiuta, se NO ne crea una!!!


che strada si segue per fare questo??

Se il server nn è in attesa il client va in errore...se tu fai una cosa del genere in teoria ti dovrebbe funzionare...

il codice seguente è la sub che prende l'errore

Private Sub wskRCC_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)

Select Case Number
Case 10061: Text1 = "Error: Winsock Closed"
End Select

wskRCC.Close

End Sub

Se adesso tu fai in modo (nn so con un timer settato a 30000) che ogni volta che viene in quell'errore chiedue il socket, ogni volta che passano 30 secondi manda l'impulso di connessione...

...se un server è connesso allora anzichè andare in errore andrà nella sub connected!!

Di solito il modulo server nn è diretto..cioè un server gestisce molti client (come ti ho mandato l'esempio qlc pagina indietro)...infatti è proprio diverso, perchè nn comunica con in client in modo "umano", ma solo in maniera automatica, reagendo alle richieste dei vari client!!

Per cui il fatto di riconoscere da solo server o client nn puoi, perchè il server deve stare in attesa e lo deve stare tutto il giorno (se è un programma serio...vedi una chat come mirc), altrimenti per un gioco va bene che scelga l'utente se fare da server o da client :p

leadergl
04-12-2003, 13:04
eh ma ad esempio, i programmi chat come ICQ, MIRC o anche MSN Messenger fungono automaticamente sia da SERVER che da CLIENT......perchè io posso sia venir contattato da qualcuno (e funziono da Server) che contattare qualcuno facendo da client...............aspè.........

forse posso fare che il programma stà automaticamente settato in modalità SERVER (quindi in ascolto) e SE E SOLO SE uno chiede di connettersi (e quindi di fare da client) lui "chiude il socket in modalità server" ed esegue tutte le procedure standard di un client.....che dici si può fare??

leadergl
04-12-2003, 13:10
....ho provato solo che non posso testarlo sul mio computer, perchè giustamente se apro più volte un programma che è in ascolto su una determinata porta mi dice che l'indirizzo è già usato, ma in teoria se il programma è su due computer diversi funziona!!!

questo però va in una chat BI-UTENTE.....altrimenti è un casino!!

che ne dici!

In pratica nel FORM_LOAD inserisco la CALL alla procedura per connettere il server!

e nella procedura per connettere il CLIENT faccio chiudere l'ascolto sulla porta e lo faccio connettere.....

matpez
04-12-2003, 17:41
Vai Vai...prova da solo!

Sai che io sono bastardo e voglio che ragioni con la tua mente!! :p

Dragonx21
04-12-2003, 17:55
Ciao Ragazzi...

Vorrei farvi un po' di domande...

1) Quanti anni avete?
2) è un po' che vorrei imparare a programmare con il VB. date una mano anke a me?

Posso entrare a far parte degli studenti?

Grazie

matpez
04-12-2003, 21:00
Originariamente inviato da Dragonx21
Ciao Ragazzi...

Vorrei farvi un po' di domande...

1) Quanti anni avete?
2) è un po' che vorrei imparare a programmare con il VB. date una mano anke a me?

Posso entrare a far parte degli studenti?

Grazie

Si certo!!

Non c'è probema... :)

leadergl
04-12-2003, 21:29
beh io sono un po anzianotto.....cmq nn me ne vergogno....ho 22 anni !!!

hei matpez...allora?!?!

Mi dai un'altro esercizio??

per la chat ho capito......per la multiutenza faccio un'array e gli faccio aprire più porte giusto??

cmq sotto con un'altro esercizio per imparare!!

matpez
05-12-2003, 02:48
OK trovato.....

....nn è facile però :)

un WEB SERVER :p

Per ora nn ti do indizi, prova ad arrivarci da solo!! :D

PS: l'allegato è per il server vollegato a tanti client! :p

leadergl
05-12-2003, 10:22
.....scusa un attimo......UN WEB SERVER?!?!? non è che volevi dire un WEB BROWSER?!?..........no è!!!

.....chiariamo (a me sopratutto) il concetto di WEB SERVER!!!

Io ho a casa un server che fa da WEB SERVER e MAIL SERVER.....ma un programma....uhmmmm.......cosa dovrebbe fare il mio programma???

matpez
05-12-2003, 11:05
Bho per esempio elencare i processi attivi sul tuo OS e darti una pagina web!!

In praatica devi fare una specia di IIS senza però la codifica di ASP! :p

leadergl
05-12-2003, 11:49
.....ma non ho la più pallida idea di come si faccia sta cosa.........penso che stai andando un po TROPPO sul complicato........ti voglio ricordare che io il VB ho fatto sino ad ora con te:

IL CODICE FISCALE (con uso di database)

IL GIOCO DEL TRIS (con implementazione gioco in rete)

........nn è che stai esagerando mo col Web Server....IIS.....servizi attivi...etc...?!?

leadergl
05-12-2003, 11:50
...ah ho imparato ad usare la System Tray :)

matpez
05-12-2003, 17:10
Volevo farti fare qlc di bello! :)

Dragonx21
07-12-2003, 17:54
date qualcosa anke a me?

ma non sono così avanti...

leadergl
08-12-2003, 22:08
beh ank'io vorrei qualche nuovo esercizio da fare.......chessò magari sull'uso dei comandi di rete....ma per internet...!!!

Magari qualcosa tipo Outlook Express....non so.....vorrei che matpez si facesse risentire...ma secondo me s'è rotto.....:D

matpez
09-12-2003, 02:15
Originariamente inviato da leadergl
beh ank'io vorrei qualche nuovo esercizio da fare.......chessò magari sull'uso dei comandi di rete....ma per internet...!!!

Magari qualcosa tipo Outlook Express....non so.....vorrei che matpez si facesse risentire...ma secondo me s'è rotto.....:D

Matpezx è andato 3 giorni a Padova a fare una bella LAN con altre 250 persone :)

matpez
09-12-2003, 03:21
leadergl: che cosa ti piacerebbe fare?

Dragonx21: cosa sai fare in VB ?

leadergl
09-12-2003, 11:06
ave caro maestro..............nn so, mi piacerebbe fare qualcosa che ha a che fare con i comandi del winsocket................oppure che ha a che fare con l'audio/video tipo lettore multimediale.......qualcosa di fico


e poi sono mooolto curioso di sapere come si fa a creare un programma tipo WMP, o meglio che ha una "form" tutta strana e personalizzata........

aspetto tue notizie.....com'è andato il LAN??

matpez
09-12-2003, 12:47
La LAN è andata molto bene grazie, molto stancante dato gli orari inesistenti ma cmq ci siamo divertiti un casino!

Per quanto riguarda i tuoi programmi io nn ne ho mai fatto uno di lettore multimediali...se cechi un po' su internet magari trovi qlc informazione!

Per i comandi del winsock la mia idea di fare un web server era carina, ma tu me l'hai bocciate in pieno!

Se vuoi fare le form con un disegno strano nn è difficile e ti spiego poi come si fa! :)

leadergl
09-12-2003, 15:45
si si spiega il fatto della form

matpez
09-12-2003, 18:01
Ti mando due blocchi perchè nn mi stava in uno zippone unico!!

Le skin mettile dentro alla cartella del programma!

matpez
09-12-2003, 18:01
:)

matpez
09-12-2003, 18:02
Originariamente inviato da leadergl
..............nn so, mi piacerebbe fare qualcosa che ha a che fare con i comandi del winsocket................

Che ne dici di fa un bel gioco di carte in rete!??! :)

PS: mi passeresti l'immagine di sfondo che hai messo nella tua chat che è molto carina :sbav:

leadergl
10-12-2003, 07:39
ho visto le skin della form....ma è un casinoooo, CLASSI, MODULI........quanta roba....ma è tutta strettamente necessaria??

e poi ho anche notato il drag della form...MI PIACE.....!!!!

non hai un'esempio più essenziale e semplice??

fico il gioco di carte.....ok!

che gioco scegliamo??

matpez
10-12-2003, 13:30
Si un esempio lo avevo ma l'ho perso :cry:

Appena lo ritrovo te lo mando! :)

PS: mi manderesti lo sondo dell'immagine della chat che è molto bella :p

Per il gioco nn so, ci penso e + tardi ti dico qlc :)

Dragonx21
10-12-2003, 13:45
poco, per ora ho fatto programmini tipo il calcolo dei numeri primi, perfetti... cose varie. anke una calcolatrice ma non so se mi ricordo come si fa, non conosco i vettori....

qual'è il limite delle variabili Double, perchè nel calcolo del resto in un operazione del programma dei numeri perfetti mi dà overflow dopo l'ottavo...

ciao

leadergl
10-12-2003, 14:13
a te lo sfondo...fico eh?! è quello di Windows Longhorn

questo è l'indirizzo, ce ne sono anke altri

http://web8.kwm-web.info/wallpaper/images/gfx_31.jpg



allò ti piace la chat???

leadergl
10-12-2003, 14:19
ah è in fase di sviluppo anche un piccolo lettore multimediale.....vabbè è rozzo e zozzo ma.....è mio!!!!

e poi mi sto destreggiando con un po di componenti semplici tipo MMControl, StatusBar e cavoli vari!!!!

dimme se te piace..............ah e poi non prende i 30MB di RAM che prende il WindowsMediaPlayer..........ne occupa più o meno quanti il WinAmp......

matpez
10-12-2003, 14:57
Originariamente inviato da Dragonx21
poco, per ora ho fatto programmini tipo il calcolo dei numeri primi, perfetti... cose varie. anke una calcolatrice ma non so se mi ricordo come si fa, non conosco i vettori....

qual'è il limite delle variabili Double, perchè nel calcolo del resto in un operazione del programma dei numeri perfetti mi dà overflow dopo l'ottavo...

ciao

Double
(virgola mobile a precisione doppia) 8 byte
Da -1,79769313486232E308 a -4,94065645841247E-324 per valori negativi;
da 4,94065645841247E-324 a 1,79769313486232E308 per valori positivi.


Al massimo prova la variabile Decimal

matpez
10-12-2003, 15:03
Originariamente inviato da leadergl
ah è in fase di sviluppo anche un piccolo lettore multimediale.....vabbè è rozzo e zozzo ma.....è mio!!!!

e poi mi sto destreggiando con un po di componenti semplici tipo MMControl, StatusBar e cavoli vari!!!!

dimme se te piace..............ah e poi non prende i 30MB di RAM che prende il WindowsMediaPlayer..........ne occupa più o meno quanti il WinAmp......

Molto carino! BRAVO! :) :) :)

leadergl
11-12-2003, 21:39
ahi allora???? sto gioco di carte quando lo si fa???

matpez
11-12-2003, 21:48
Quando vuoi tu...che gioco vuoi fare...

Se mi mandi la mail in pvt ti mando un file che ti può essere utile per fare il gioco di carte :)

matpez
11-12-2003, 22:09
Ecco l'esempio che ti avvevo promesso :oink:

leadergl
12-12-2003, 15:51
come faccio ad usare il tuo OCX??

matpez
12-12-2003, 18:50
Basta che lo metti in system32

Poi in VB nel menu Project selezioni la voce Componets e carichi CARDS.OCX

Le dimensioni normali della carta sono: 1065 x 1440

Fammi sapere se ci sono problemi! :p

leadergl
12-12-2003, 22:35
si si ho fatto........avevo risolto appena dopo averti mandato il messaggio!!!!

Carino quel OCX..............

senti nel file effetto vetro, il programma richiama procedure nei file user....gdi......e cazzi vari, ma non c'è un modo per prendermi proprio quelle procedure e copiarle nel mio programma???

così magari mi creo un OCX o una DLL mia per fare la trasparenza della form!!!

matpez
12-12-2003, 23:22
Se vuoi fare una funzione di trasparenza devi cmq sempre appoggiarti alle API ed in questo caso le dl che lui va ad utilizzare sono appunto le API!

Se tu vuoi fare un tuo ocx o una tua dll nn è nient'altro che un richiamo di quelle API!

Per cui nn so asporta il contenuto di quella funzione in un modulo così basta che lo includi se ti serve la trasparenza! :)

Dai dai che gioco facciamo :confused:

leadergl
13-12-2003, 09:47
c'ho provato però mi da vari errori.....

leadergl
13-12-2003, 09:53
guarda l'ho modificato così....lasciando solo l'essenziale! come faccio a farlo diventare un modulo??

matpez
13-12-2003, 12:01
Ora bast che includi nel tuo progetto il modulo e richiami la funzione ed il gioco è fatto!

Semplice no :)

matpez
13-12-2003, 12:03
ops...l'allegato! :)

matpez
13-12-2003, 12:04
Sto forum mi prende per il c..o!!!!

leadergl
13-12-2003, 12:17
ah ecco cosa mancava...........giustamente....beh ho ancora poca dimestichezza con certe cose....:D

cmq, l'unica pecca....beh sono gli spigoli!!!!!

il tutto funziona PERFETTAMENTE con immagini che hanno angoli......ma se l'immagine (tipo quella che t'ho mandato) è tondeggiante....beh si vede il grigio sotto................come si risolve sto problema???

matpez
13-12-2003, 12:49
Già la tua immagine originali ha i bordi grigi.....che domanda mi fai?!?!?!?!??!?!!?

Lui segue il bordo dell'immagine, se l'immagine ha bordi tondi segue i bordi tondi, altrimenti fa quelli spigolosi! :p

matpez
13-12-2003, 13:25
Cmq se vuoi qlc di + professionale ti consiglio di guardare lo skinmove! :)

L'effetto vetro è un po' alla buona! :D


Cmq perchè prima di imparare le cose visive come la tray o le skin nn impari come si programma in VB ?

leadergl
13-12-2003, 14:49
si lo so...era uno sfizio.....anke UN BELLO SFIZIO!!!

cmq è vero la mia immagine ha i bordi grigi...ma quel grigio è impostato come colore trasparente.....!!!

Solo che in VB mi si vede lo stesso! :cry:

vabbè.........cmq passiamo al gioco di carte...quale vogliamo fare??

leadergl
13-12-2003, 15:02
conosci il BURRACO??? credi sarebbe troppo dificile??

al solo pensiero svengo.............pensare a creare l'intelligenza artificiale del computer mi strassa già adesso.....................

cmq propongo:

1 - Burraco
2 - Scala Quaranta
3 - Poker

boh...non so dimmi tu

matpez
13-12-2003, 22:48
No io nn volevo fare un gioco di carte dove si giocava contro il pc :)

Ma solo il gioco multi-client (modulo client e server) per giocare a sto gioco!

Il client mostra le carte proprie e degli avversari il server invece tiene il conto di tutto, cioè è il vero motore dei gioco! Il client è solo posto di lettura per leggere e mandare informazioni fra avversari!

Non so che gioco si potrebbe fare, ma cmq un gioco di carte ti insegnerebbe molte cose..tipo come mischiare un vettore!!

Dai dimmi tutti i giochi che ti piacerebbero fare... dai su un bell'elenco :)

leadergl
14-12-2003, 11:13
vabbè allora facciamo una cosa, particamo col classico poker e poi magari ne facciamo altri....che ne dici?

leadergl
14-12-2003, 12:14
cmq ho scaricato un programma VERAMENTE INTERESSANTE per le skin.....solo che ancora devo capire bene come funziona, si chiama ActiveSkin v4.3 è fico, puoi fare skin veramente belle e particolari!!!!

matpez
14-12-2003, 13:04
Originariamente inviato da leadergl
cmq ho scaricato un programma VERAMENTE INTERESSANTE per le skin.....solo che ancora devo capire bene come funziona, si chiama ActiveSkin v4.3 è fico, puoi fare skin veramente belle e particolari!!!!

Io ti ripeto...nn bruciare le tappe....

Avrai molte difficolà nel fare il gioco di carte (che sono cmq cose di routine) e tu pensi alle skin :(

matpez
14-12-2003, 13:14
Originariamente inviato da leadergl
vabbè allora facciamo una cosa, particamo col classico poker e poi magari ne facciamo altri....che ne dici?

Sinceramente nn so tutte le regole...però va bene ! :)

Dragonx21
14-12-2003, 17:03
ciao, poi provo la decimal, e vi posto il programma.

ho un problema, ho perso le MSDN Library, come faccio?


mi date qualcosa di semplice semplice da fare?

scusate se sono un po' assente.. poi giustifico....

ciao

Dragonx21
14-12-2003, 17:19
non esiste la decimal....boh... scusa, non la vede...

posto il progetto...

ciao

matpez
14-12-2003, 18:00
No la decimale nn è di VB ma di VBA

Cmq mandami l'esercizio completo nn solo il file vbp che nn include nulla...mandami la form o il modulo, insomma il programma! :)

Dragonx21
14-12-2003, 18:59
scusa non sapevo cosa ti dovevo mandare....

matpez
14-12-2003, 20:27
Originariamente inviato da Dragonx21
scusa non sapevo cosa ti dovevo mandare....

:(

Mancano ancora cose.....

....quando salvi in una cartella il tuo progetto di solito ti fa 3 file principali...il vbp che è il progetto, il file frm che è la tua form e il file frx che sono le proprietà delle form!!

Compatta la cartella del tuo programma e mandami quella :rolleyes:

Se questi file nn si trovano nella stessa cartella hai fatto una casino della madonna! :(

Dragonx21
15-12-2003, 13:41
opps....

allora.... dopo guardo...

ho fatto casino xk l'exe è troppo grande...

matpez
15-12-2003, 14:08
Originariamente inviato da leadergl
vabbè allora facciamo una cosa, particamo col classico poker e poi magari ne facciamo altri....che ne dici?

Allora come te la cavi? :)

leadergl
15-12-2003, 14:43
a dire la verità ancora devo cominciare.................................ok impegno e disciplina :O

allora..........ehm...vediamo un po a poker si gioca......


allora, i punti sono così dati:

CARTA SINGOLA
COPPIA (2 carte uguali)*
DOPPIA COPPIA (una coppia di 2 carte uguali)*
TRIS (tre carte uguali)*
SCALA (sequenza ininterrotta di 5 carte di seme diverso)
FULL (un tris ed una coppia)
COLORE (5 carte di ugual colore)
POKER (4 carte uguali)
SCALA REALE (scala la cui carta massima è il K)

*in caso di carte uguali si può o vedere a chi ha la terza carta più alta o si guarda al seme della coppia

matpez
15-12-2003, 15:16
Ora so le regole :p

leadergl
15-12-2003, 15:18
allora vorrei dare questa impostazione al gioco.....

dimmi se cominciamo bene....e già ti fa schifo e ti da l'idea di un gioco fatto male......

ah col tuo OCX come si fa a dare l'impressione di un mazzo di carte???

leadergl
15-12-2003, 15:21
ah.......aspè noi abbiamo detto che volevamo farlo multi-client.....quindi devo cambiare...aspe

matpez
15-12-2003, 15:25
Originariamente inviato da leadergl
ah col tuo OCX come si fa a dare l'impressione di un mazzo di carte???

:confused:

leadergl
15-12-2003, 15:29
il tuo OCX è fico, però devi aggiungere un opzione per mantenere inalterate le PROPORZIONI della carta..........eheh....così si che sarebbe quasi perfetto.............perchè per renderlo perfetto dovresti inserire una particolare funzione per "l'effetto mazzo intero" come quello che c'è nel SOLITARIO di Windows.....

poi si che è STRA-PERFETTO

matpez
15-12-2003, 15:44
Originariamente inviato da leadergl
il tuo OCX è fico, però devi aggiungere un opzione per mantenere inalterate le PROPORZIONI della carta..........eheh....così si che sarebbe quasi perfetto.............perchè per renderlo perfetto dovresti inserire una particolare funzione per "l'effetto mazzo intero" come quello che c'è nel SOLITARIO di Windows.....

poi si che è STRA-PERFETTO

Per l'effetto mazzo glielo dai tu mettendo più carte uno sotto l'altro!

Anche m$ fa così!!

Per il size della carta ci lavoro su! :p

leadergl
15-12-2003, 15:57
allora siccome io NON DEVO vedere cosa hanno gli altri in mano, è inutile che posiziono anche le loro carte sul tavolo, tanto sarebbero coperte, giusto?!?

E PENSO PROPRIO DI SI

inotre dovrei creare un UNICO ARRAY per le carte, che sono 32 dal 7 in su! (se invece si gioca in 5 si usano 36 carte, dal 6 in su...cmq non ci interessa)!!!!!

Quindi dovrei creare un ARRAY col tuo OCX da 0 a 31, ma io preferirei da 1 a 32!!!!!

poi 5 di queste le do a me ed a seconda di quanti giocatori ci sono ne tolgo altre 5 a testa!

Facendo un esempio per 2 giocatori, DEVO:

1 - mischiare l'array di 32 carte
2 - dare 5 carte, alternate (una alla volta) ai vari giocatori!
3 - cominciare il gioco

ORA...........come si mischia un array?? Io saprei ordinarlo......ma non disordinarlo.........

ci devo pensare....allora.................

leadergl
15-12-2003, 16:00
allora, potrei:

GENERARE un numero casuale da 0 a 31 ed inserirlo al primo posto dell'array, successivamente generare altri numeri e controllare di volta in volta che non siano stati già usati......che ne dici??


UNA DOMANDA...ma dovrei creare un vettore a parte dove conservare gli indici delle carte o si può mischiare proprio l'array del tuo componente OCX???

credo mi convenga di più la prima....giusto??

matpez
15-12-2003, 17:14
Originariamente inviato da leadergl
allora, potrei:

GENERARE un numero casuale da 0 a 31 ed inserirlo al primo posto dell'array, successivamente generare altri numeri e controllare di volta in volta che non siano stati già usati......che ne dici??

Secondo me ti crei un bel vettore da 32 posti (da 1 a 32)!!

Lo devi riempire con numeri dal 7 al 13 e lo fai per i 4 semi

Per cui tocca a te mischiare le carte....c'è un modo + veloce per farlo...pensaci! :p

PS: ti consiglio anzichè utilizzare un vettore...di utilizzare un record :p

PS2: guarda la mail!

leadergl
15-12-2003, 21:54
no no, non mi piace così l'OCX......non ci siamo, perchè se setto una grandezza maggiore la carta non si ridimensiona e lo spazio che avanza diventa VERDE.............e non è bello eh!!!!

una volta corretto questo è quasi ok, perchè dovresti fare che l'immagine mantiene le SUE PROPORZIONI anche se viene ingrandita o rimpicciolita.........ed ovviamente dovresti eliminare il verde....che è meglioo!

leadergl
15-12-2003, 22:02
perchè un record????

cmq potrei anche riempire prima tutto il vettore e successivamente scombinarlo!!

poi potrei fare:

OPTION EXPLICIT
dim vettore(32) as integer


private function mischia()
dim i as integer
dim a as integer
dim temp as integer


for j=1 to 4
_____for i=1 to 32
___________a=rnd(32)+1
___________temp=vettore(i)
___________vettore(i)=vettore(a)
___________vettore(a)=temp
_____next
next

end function



che ne pensi??
alla fine dovrebbe mischiare abbastanza bene....credo

matpez
15-12-2003, 22:10
No perchè nn controlli se il random estrae una carta giù uscita e così facendo tu ti ispiri alla fortuna...e nell'informatica nulla è dettato dalla fortuna :)

Un record perchè in un campo puoi visualizzare il numero della carta (dal 7 al 13) e nell'altro campo il seme!

Che ne dici?

leadergl
15-12-2003, 22:24
cmq ho provato così e sembra mischiarle bene.........però mi serve il record.....m'ero scordato il segno.....:p


Private Function riempi()
Dim i As Integer
Dim valore As Integer
Dim j As Integer

valore = 0
For j = 1 To 4
___For i = 7 To 14
______valore = valore + 1
______If i = 14 Then
_________vettore(valore) = 1
______Else
_________vettore(valore) = i
______End If
___Next
Next

End Function

Private Function mischia()

Dim i As Integer
Dim j As Integer
Dim a As Integer
Dim temp As Integer

Randomize

For j = 1 To 4
___For i = 1 To 32
_____a = 1 + Rnd(32)
_____temp = vettore(i)
_____vettore(i) = vettore(a)
_____vettore(a) = temp
___Next
Next

end function

matpez
15-12-2003, 22:31
Originariamente inviato da leadergl
no no, non mi piace così l'OCX......non ci siamo, perchè se setto una grandezza maggiore la carta non si ridimensiona e lo spazio che avanza diventa VERDE.............e non è bello eh!!!!

una volta corretto questo è quasi ok, perchè dovresti fare che l'immagine mantiene le SUE PROPORZIONI anche se viene ingrandita o rimpicciolita.........ed ovviamente dovresti eliminare il verde....che è meglioo!

Eccoti accontentato, ora nn hai scuse :p :p :p :p :p :p

PS: have you got an email!! :) :) :) :rolleyes: :O :rolleyes: ;) :cool: :) :D

leadergl
15-12-2003, 22:33
ma come diamine si dichiarano i record in VB?? qui mi parla solo di array e che cavolo!!!:muro: :muro: :muro:

matpez
15-12-2003, 22:34
NO!

Voglio che mi crei un vettore già mischiato (che poi lo tramuterai in record) ma per adesso fai il vettore! :)

Voglio che mi controlli che in caso di randon dello stesso numero lui nn lo metta e cmq i numeri da randomizzare nn sono da 1 a 32 ma solo da 7 a 13 (dal 7 al rè) :)

matpez
15-12-2003, 22:36
Originariamente inviato da leadergl
ma come diamine si dichiarano i record in VB?? qui mi parla solo di array e che cavolo!!!:muro: :muro: :muro:

Così lo crei:


Private Type RecordMazzoCarte
nSeme As Integer
nNumero As Integer
End Type

E così lo dichiari...

Dim recMazzo(32) As RecordMazzoCarte

leadergl
15-12-2003, 22:36
ahah.....e no....e no....e no!!!!

ora è ok MA.....non è scalabile.....non posso scegliere se averla più grande o più piccola.......:O

so k ti rompo le palle, ma come te voglio che anche tu dia il massimo nelle cose.....:D


cmq per i record...??

leadergl
15-12-2003, 22:37
ah ecco...stavo pensando ad una cosa del genere ma non sapevo se era ok...thanks

matpez
15-12-2003, 22:38
Originariamente inviato da leadergl
ahah.....e no....e no....e no!!!!

ora è ok MA.....non è scalabile.....non posso scegliere se averla più grande o più piccola.......:O


Ma infatti nn deve essere scalabile....altrimenti la carta si sfalda...hai mai visto un gioco della M$ con la carte + grosse di quelle dimensioni?

Se utilizzi la 1280x 1024 come risoluzione nn è colpa mia :p

leadergl
15-12-2003, 22:47
si lo so....PERO' devi dare la possibilità alla gente "malata" e "bastarda" di poter anche rimpicciolire a dismisura o ingrandire a dismisura, eheh..............dai che non credo sia difficile.......almeno per te....:)

leadergl
15-12-2003, 22:59
allora il meglio che son riuscito a fare per il DISORDINAMENTO è:

For i = 1 To 32
__a = Int((32 - i + 1) * Rnd + i)
__temp = vettore(i)
__vettore(i) = vettore(a)
__vettore(a) = temp
Next


non è il massimo ma fa il suo dovere

matpez
15-12-2003, 23:02
Originariamente inviato da leadergl
si lo so....PERO' devi dare la possibilità alla gente "malata" e "bastarda" di poter anche rimpicciolire a dismisura o ingrandire a dismisura, eheh..............dai che non credo sia difficile.......almeno per te....:)

Non è questione di farlo o nn farlo...è questione che ti sei fissato su una cosa scorretta :p
E' stata una mia disattenzione quella cosa li, però poi mi sono reso conto che quando uno crea la carta (come hai fatto tu nel tuo progetto) diventa orribile soprattutto a chi nn ha la tua stessa risoluzione!
Dato che la carta ha una determinata dimensione, questa deve rimanere tale!

Poi un altra cosa ;) , la smetti di fissarti sulle cose grafice, che in VB vengono per ultime, prima abbozzi il progetto...poi ti fai il c...o nel codice ed infine pensi a tutte le cose belle da mettere :p

Molte persone pensano che VB sia molto facile e poi che messe le cose sui form il resto è una bazzeccola!
Ma si tratta sempre di scrivere del codice e per esempio nel mio programma che faccio nel tempo libero da circa 6 mesi sono arrivato ad circa 480 pagine di codifica :p , per cui nn è tutto facile :)

Queste parole sono per dirti che a volte sei molto dispersivo su cose che a volte non sono utili al fine dello scopo di questo 3d, cioè imparare VB!
Io sono disposto a insegnarti quello che ti serve per camminare da solo però vorrei che ti contrenti + sul codice e meno sull'aspetto (quello come ho già detto arriverà dopo)....

...non tutti hanno avuto la fortuna di avere un "insegnante" di VB :rolleyes:


DAAAAAAAAAAAAAAAAAAAAAIIIIII che ti voglio battere a poker! :p :) :p

leadergl
15-12-2003, 23:07
che programma stai realizzando???

fichissimo.........quante pagine :eek: ................mi esaltano ste cose.................ok MI METTO D'IMPEGNO SUL CODICE VERO E PROPRIO, il fatto è che in tanti anni di pascal ho visto e stravisto miliardi di linee di codice, allora mo che posso usare un po di grafica mi esalto e perdo tempo...........so che è sbagliato, ma anche un tizio che non ha mai assaggiato la NUTELLA, una volta provata non può farne a meno...........ed io ..... beh, sto diventando grafica dipendente.....:D


cmq dai che mi impegno, domani mattina non devo neanche andare all'univ, così avrò tanto tempo per programmare seriamente..................;) :rolleyes: :p :O

matpez
15-12-2003, 23:08
Originariamente inviato da leadergl
allora il meglio che son riuscito a fare per il DISORDINAMENTO è:

For i = 1 To 32
__a = Int((32 - i + 1) * Rnd + i)
__temp = vettore(i)
__vettore(i) = vettore(a)
__vettore(a) = temp
Next


non è il massimo ma fa il suo dovere

Mi piacerebbe (per questioni di tempo) che tu lo creassi questo vettore già mischiato :)