PDA

View Full Version : Esercizi VISUAL BASIC


Pagine : 1 [2]

matpez
15-12-2003, 23:13
Originariamente inviato da leadergl
che programma stai realizzando???

fichissimo.........quante pagine :eek: ................mi esaltano ste cose.................

480 Pagine al massimo che sono riuscito ad ottimizzare il codice!

E' un programma nato per me ed utilizza una dll che ci sto lavorando da circa un anno!!
Questa dll racchiude il mio sapere di VB!
Cmq il programma sembra piccolino ma è dotato di tante cose che almeno a me ed ad alcuni è utile :p

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

BRAVOOOOOOOOOOOOOOO!! :) :) :)

leadergl
15-12-2003, 23:46
ora vado a dormire, ci si vede domani......ancora grazie e ciao!!

un'ultima domanda.......in un linguaggio come il VB, come fai prescindere dall'interfaccia grafica durante la programmazione??

matpez
15-12-2003, 23:50
Cioè intendi come si fa a creare un progetto in VB senza grafica...

Se è così è semplice, basta che crei un modulo e ci metti una bella procedura chiamata Sub Main(), nella proprietà del progetto anzichè dire che parta dalla formmain parta dalla Sub Main ed il gioco è fatto! Hai un programma in VB che nn si vede :)

leadergl
16-12-2003, 09:50
senti ma avendo un file di VB già compilato senza i codici sorgenti, c'è un modo di risalire a questi ultimi????

ovvero ad esempio il mio programma della chat, se perdessi i sorgenti c'è una specie di "decompilatore" VB che mi permetterebbe di recuperarli dal mio EXE???

matpez
16-12-2003, 12:50
Originariamente inviato da leadergl
senti ma avendo un file di VB già compilato senza i codici sorgenti, c'è un modo di risalire a questi ultimi????

ovvero ad esempio il mio programma della chat, se perdessi i sorgenti c'è una specie di "decompilatore" VB che mi permetterebbe di recuperarli dal mio EXE???

Qui siamo al limite dei regolamente del forum, per cui ti prego di nn insistere...

Per VB5/6 nn esiste perchè la complessita di codifica di un EXE da un file p-code è impossibile da tornare alla sorgente!
Per VB3 il compilato nn era così complesso per cui esistono decompilatori per VB3!

PS: una domanda del genere mi puzza :p , non vorrai mica prendere un EXE e vedere cosa c'è sotto vero? e nn farlo tu da capo? :mad:

:) ;) :D :p ;) :rolleyes: :) :D

leadergl
16-12-2003, 13:53
no, assolutamente! è che la cosa era sfiziosa!!!

i programmi mi piace farli da me, magari con qualche piccolo aiuto (il tuo).............ma non COPIARLI........è un cosa brutta ed indegna per un programmatore!!!

è che è una cosa molto fica fare il percorso all'indietro dei propri programmi!

leadergl
16-12-2003, 14:11
ho trovato un file su come si gioca al poker..............è un casino

matpez
16-12-2003, 14:45
Originariamente inviato da leadergl
no, assolutamente! è che la cosa era sfiziosa!!!

i programmi mi piace farli da me, magari con qualche piccolo aiuto (il tuo).............ma non COPIARLI........è un cosa brutta ed indegna per un programmatore!!!

è che è una cosa molto fica fare il percorso all'indietro dei propri programmi!

lo so :) , ma è ILLEGALE! :p

matpez
16-12-2003, 14:49
Originariamente inviato da leadergl
ho trovato un file su come si gioca al poker..............è un casino

Un problema alla volta :)

Incomincia nel fare il gioco senza i casi particolari, cioè il vedo nn vedo e cose varie, fai che tutti i giocatori hanno diritto a cambiare le carte una volta e quelle che hanno saranno le loro definitive!

Poi man mano metti altre cosine dentro! :p

leadergl
16-12-2003, 14:58
ho un problema nella gestione del modulo..........help

matpez
16-12-2003, 15:09
Nemmeno lo scarico....

Il forum non è fatot per gettarsi alla prima difficoltà!! Io qundo ero alle prime armi non conoscevo il forum e cmq anche se lo avessi saputo nn avrei chiesto nulla....

...voglio che ci arrivi da solo!!! Se proprio sei in difficoltà ma dico difficoltà e nn sai dove sbattere la testa allora intervengo io :)

PS: perchè non iniziamo con un gioco + facile da creare.... un bel 7 e mezzo a 4 giocatori, ti va ?

Qui ci sono le regole!

matpez
16-12-2003, 15:10
Prima nn volevo offenderti :( , ma era solo per farti capire che nell'informatica devi ragionare il + possibile da solo....ti assicuro che è l'unico modo per arrivare al fine che ti sei proprosto :)

leadergl
17-12-2003, 09:34
si però quel gioco li non si gioca mica con le carte francesci......eheh...........mi servirebbe......beh......un OCX con le carte napoletane.....magari ce l'hai già.....:D

matpez
17-12-2003, 13:05
Originariamente inviato da leadergl
si però quel gioco li non si gioca mica con le carte francesci......eheh...........mi servirebbe......beh......un OCX con le carte napoletane.....magari ce l'hai già.....:D

Ma mica è vero.... io ho sempre giocato con le carte francesi e vanno benissimo! Tanto conta il numero non il simbolo!

Eccetto il re di quadri che è la matta! :)


Allora ti piace come idea?

leadergl
17-12-2003, 13:37
ok, è più semplice così per iniziare!!!

Bene allora devo:

1 - Mischiare le carte
2 - Dare una carta ad ogni giocatore
3 - Procedere uno per volta vedendo se vuole altre carte

se fa 7 e 1/2, il gioco si ferma o va avanti?
in caso che il banco faccia 7 e 1/2 vince i banco

DEVO effettuare questi CONTROLLI:

1 - ad ogni carta estratta che non siano finite le carte, ed in tal caso......boh cosa prevede il gioco?

2 - che il giocatore non abbia sballato

MI SERVONO le seguenti cose:

1 - OCX Carte (che abbiamo)
2 - 2 pulsanti (Altra Carte , OK Così)

e basta credo.....dimentico qualcosa??

leadergl
17-12-2003, 13:40
ma devo fare anche:

1 - le puntate
2 - che si taglia il mazzo
3 - che si sorteggia il mazziere

etc....??

leadergl
17-12-2003, 13:46
o cacchio.........scusa scusa, m'ero scordato che m'hai mandato le regole.......OK TUTT'APPOST!!!!!!!

le devo seguire tutte vero?!?!? e pens propri'e si !!!! ahhhhh

ok mi metto al lavoro adesso...........ciao...........cerchero di non chiederti niente, ANZI, NON TI CHIEDERO' NIENTE!!!!!

;) :cool:

leadergl
17-12-2003, 14:19
secondo te per mostrare le carte del giocatore mi conviene
1 - mettergliele già sul campo e settarle come NON VISIBILI ed attivarle solo durante il gioco
o
2 - non posizionarle proprio e successivamente creare la variabile AS CARD, usare SET ... =NEW CARD .... e disegnarla in determinate X ed Y???

io credo di più il primo metodo vero?

tipo posiziono 10 carte a giocatore, tanto non le userà mai tutte e 10.....e che cavolo ci vogliono tutte mezze carte!!! IMPOSSIBILE

matpez
17-12-2003, 14:49
Ma si metti 4 file di carte da 10 (mettile anche una sopra l'alta con un pezzo che si veda qual'è la carta però)!

Poi si in pratica devi estrarre il mazziere (la prima volta) poi lo diventa chi fa 7 e 1/2

Chi coppa le carte è chi sta a sinistra del mazziere (io gli farei chiedere una domanda...."quante carte vuoi coppare?" e lui a seconda del numero che mette tagli il mazzo)

Poi si per il resto gestisci una puntata (0.25, 0.50, 1 €), e ti attieni alle regole che ti ho mandato!

Occhio alla MATTA, che è il re di quadri, questa carta prende un valore da 1/2 a 7 per cui stai attento!

Cmq se hai bisogno di un ragionamento chiedi pure altrimenti mi annoio a non sentirti :(

leadergl
17-12-2003, 16:28
ma perchè sto bastardo non mi fa funzionare il 7.5 ???

faccio

stato = somma dei punteggi delle carte che ho in mano

if stato=7.5 then
_____hai vinto
else
if stato>7.5 then
_____hai perso
end if



finchè perdo tutto ok, ma se vinco non mi dice nulla why??

leadergl
17-12-2003, 16:40
MA SONO PROPRIO UN'IDIOTA.............li avevo dichiarati INTEGER

ora ho corretto con SINGLE....è tutto ok....

leadergl
17-12-2003, 16:42
ho usato anche un modulo..............per fare la somma dei punti delle carte che ho sul tavolo.....eheh:)

leadergl
17-12-2003, 16:45
cmq per il momento ho fatto:

genera vettore con le carte
mischia il vettore
distribuisce le carte
verifica se hai vinto o perso

DEVO

inserire il gioco del mazziere (x ora nn gioca)
inserire il tcp
inserire gli altri giocatori
inserire i soldi
rendere possibile fermarsi e accettare il punteggio

credo che mi bastino un paio di giorni.....in questo periodo nn ho molto tempo.....sai gli esami....però ci sono!

La cosa importante è che ho inquadrato la fase progettazione

matpez
17-12-2003, 17:32
Originariamente inviato da leadergl
cmq per il momento ho fatto:

genera vettore con le carte
mischia il vettore


Hai fatto come ti avevo chiesto...lo generi già mischiato?

leadergl
17-12-2003, 19:38
......aspè, ma che significa "lo generi già mischiato"??
come faccio!!

io per riempirlo ho un record di 2 elementi ed Una variabile associata al record, come tu mi suggeristi!

Per riempirlo faccio semplicemente

indice=0
for i=1 to 4
____for j=1 to 10
_______indice=indice +1
_______If i > 7 Then
___________Vettore(valore).nNumero = i + 3
_______Else
___________Vettore(valore).nNumero = i
_______End If
Vettore(valore).nSeme = j
____next
next

e poi lo mischio......ma come faccio a fare tutte e due insieme?!?!

leadergl
17-12-2003, 19:44
ah forse ho capito....:

io per indicargli i posti dell'array uso la variabile VETTORE, ma se io a questa variabile do valori casuali compresi tra 1 e 40 creo il vettore già disordinato!!

Mi servirebbe però una funzione booleana che mi restituisca true se l'elemento del vettore è vuoto e false in caso contrario...........no che ca@@o dico DEVO SOLO fare che la funzione che genera il vettore sia ricorsiva della serie

Private function CreaVettore(indice as integer)
...
end function

in modo da richiamarla con l'indice che mi serve casomai la casella che cerco di riempire è già occupata!!!!

SIIIIIIIIII così!! vero?

leadergl
17-12-2003, 19:52
così:

Public Sub riempi(seme As Integer, numero As Integer)
__Dim i As Integer
__Dim j As Integer
__Dim valore As Integer

____'Riempe il record con le carte per giocare
____i = 0
____j = 0
____valore = 0
____For j = seme To 4
______For i = numero To 10
________valore = Rnd(40) + 1

________If vettore(valore).nNumero <> Null Then Call riempi(j, i)

________If i > 7 Then
__________vettore(valore).nNumero = i + 3
__________Else
__________vettore(valore).nNumero = i
________End If
________vettore(valore).nSeme = j
______Next
____Next
End Sub

leadergl
17-12-2003, 20:08
vabbè mi son scordato di mettere

RANDOMIZE

però non mi funge, mi dice che

call riempi(j,i) è OUT OF STACK

...in sostanza credo mi generi sempre lo stesso numero richiamando la SUB troppe volte e riempiendo lo stack.....

come potrei risolvere....!?!?!:rolleyes:

leadergl
17-12-2003, 20:13
ho anche provato a sostituire

<>NULL con <>0 ma niente non va!!!!

why??

leadergl
17-12-2003, 22:26
invece della ricorsività ho provato anche un ciclo

do while

genera numero casuale
doevents

loop


ma mi entra in un ciclo infinito...........ci sto perdendo troppo tempo per stà cosa e non riesco a capire perchè non va.....help:muro: :muro: :muro: :muro:

leadergl
17-12-2003, 22:34
ma sono un idiota.....nananan....fatto

leadergl
17-12-2003, 22:37
c'è però un problema..................rimane SEMPRE un solo elemento uguale a ZERO in posizione generica, nel senso non sempre nella stessa.................e non capisco perchè

matpez
18-12-2003, 01:24
Inanzitutto piantala di mettere tanti ______, se vuoi mettere l'indentazione anche nel forum basta che premi sul bottoncino #, poi scrivi un carattere a caso, poi fai OK, togli il carattere ed incolli il tuo codice, così lo indenta in maniera corretta :) :p :)

Questo è i lmio codice per creare un mazzo ordinato e poi lo mischia (va bene così dai nn andiamo a complicarci la vita che è già luno sto programma) :)


Public Sub CreaMazzo()

'questa procedura serve per inizializzare un
'mazzo da "sette e mezzo", in pratica dall'asso
'con valore 1 fino al 7, le tre figure valgono mezzo!!

Dim nI As Integer
Dim nJ As Integer


'ciclo per i semi
'1· Picche
'2· Quadri
'3· Fiori
'4· Cuori
For nI = 1 To 4

'ciclo per i numeri dal 1 al 7
For nJ = 1 To 10
recMazzo(nJ).nSeme = nI
recMazzo(nJ).nNumero = IIf(nJ <= 7, nJ, nJ + 3) '11· Jack, 12· Donna, 13· Re
recMazzo(nJ).fValore = IIf(nJ <= 7, nJ, 0.5)
Next nJ
Next nI

'setto la matta (Re di Quadri) al valore 7
recMazzo(20).fValore = 7

End Sub

Public Sub MescolaMazzo()

'questa procedura serve per mescolare un mazzo
'dopo averlo mischiato copperà il tutto

Dim nNum As Integer
Dim nI As Integer
Dim nK As Integer
Dim nCoppo As Integer
Dim recAux(40) As RecordMazzoCarte


Randomize

For nI = 1 To 40
Do
'randomizzo a caso una posizione del mazzo base
nNum = Int(Rnd * 40) + 1
Loop Until recAux(nNum).nNumero = 0

'copio dal mazzo base al mazzo aux (indice casuale)
recAux(nNum) = recMazzo(nI)
Next nI

'coppo il mazzo alla posizione che indica il giocatore alla sinistra del mazziere (20 default)
nCoppo = 20

'metto il secondo blocco all'inizio del mazzo
For nI = nCoppo + 1 To 40
nK = nK + 1
recMazzo(nK) = recAux(nI)
Next nI

'metto il primo blocco alla fine del mazzo
For nI = 1 To nCoppo
nK = nK + 1
recMazzo(nK) = recAux(nI)
Next nI

End Sub


Ti voglio chiedere scusa se ti rispondo/erò poco in sti giorni ma ho un pacco di robe da fare che la metà basta per dormire poco, pensa farle tutte :( , va be, una cosa alla volta :)

Io avevo pensato a 2 procedure, perchè la prima crea il mazzo e basta, in quanto nn lo devi + creare (nella realtà nn compri mica il mazzo di carte ogni volta che rifai il mazzo), invece il mazzo lo rifai tante volte e questo l'ho messo in una procedura a parte!

NB: ti vorrei solo ricordare (in caso il lavoro ti prendesse troppo) che il gioco è via rete, per cui i client sono solo di input/output, tutto il resto, come la crezione del mazzo, il mescolamento etc etc è dettato dal server! :p

leadergl
18-12-2003, 14:42
senti è corretto crearsi un modulo per la rete??
io sto facendo così:



Public Sub Client(rete As Winsock, destinazione As String)
rete.Protocol = sckTCPProtocol
rete.Connect destinazione, 5555
End Sub

Public Sub Server(rete As Winsock)

'Chiude precendenti connessioni
If rete.State = sckConnected Then rete.Close
'è pronto per accettare nuove connessioni
rete.Protocol = sckTCPProtocol
rete.LocalPort = 5555
rete.Listen
End Sub


solo che come faccio a gestire da qui dentro le parte per i dati in arrivo??
quella è una funzione di default del winsocket.....ma qui non me la da!
Va bene se faccio così:

Public Sub Winsock_DataArrival(ByVal bytesTotal As Long, rete as Winsock)

rete.GetData ....etc

End Sub


che dici va?? come dovrei fare??

leadergl
18-12-2003, 14:45
o la funzione DataArrival la devo gestire SOLO all'interno del form?

forse è meglio......dimmi tu.....

però visto che progresso.....sto usando i moduli.....tutto più ordinato!!! :D

dai ho fatto qualche miglioramento dall'inizio??

matpez
18-12-2003, 15:07
Il modulo con dentro quelle due Sub non servono a niente viste così, cioè...

Tu hai un solo client ed un solo server, il server è gestito in maniera tale da supportare il multi-client. Il client è uno solo, ma è lo stesso per tutti i giocatori!

Inanzitutto il socket lo metti nel form e nn hai bisogno di appoggiarti ad un modulo, il modulo server molte volte ma per creare provedure/funzioni che usi ricorrentemente su più form, se tu hai un solo form il tutto è inutile! Se hai più form ma la proc/funz la utilizzi solo nel form allora è inutile.

Per il resto l'esempio che ti mandai sul multi-client dice già tutto :p

PS: certo che sei migliorato, facendo esercizi si migliora sempre di più! ;) :) ;)

leadergl
18-12-2003, 15:20
m'è venuto mal di testa.................................riprendo più tardi..........peccato mi piacevano i moduli................è tutto così ordinato.....:( :(

leadergl
18-12-2003, 15:21
ti invio quello che ho fatto fin ora......devo aggiungere alcune regole ed introdurre gli altri giocatori....

cmq te lo mando uguale

matpez
18-12-2003, 15:39
Non è male per adesso, mi piace dai :D

Però io incomincierei a fare la gestione via socket altrimenti ti trovi a programma finito e tutto quello che hai fatot è da rifare perchè devi tenere conto che viene trasmesso via rete dal server al client :)

leadergl
19-12-2003, 14:20
è vero altrimenti diventa un casino!!

Allora, il CLIENT

passa al server i dati relativi a quale pulsante è stato premuto, giusto?

mentro il SERVER

invia a tutti i client la risposta, unica per tutti (uguale)

giusto??

per stabilire il vincitore devo solo tener conto in una variabile quale sia il giocatore col risultato più alto!!

leadergl
19-12-2003, 14:24
in tutto questo però devo tener conto del numero delle connessioni che sarebbero i miei giocatori.............facciamo massimo 4 altrimenti è un casino tenere le carte di tutti sulla form.........e se oltre ai quattro si vuole aggiungere qualcun'altro devo solo fare


winsocket1.ConnectionRequest = sckConnectionRefused

giusto? o c'è un'altro modo per rifiutare una connessione??

leadergl
19-12-2003, 14:26
scusa un'altra cosa......come si fa a personalizzare una:

Progress Bar

e una

Slider

??

voglio che abbiano non so, un'immagine particolare......tipo come fanno i lettori multimediali..............:rolleyes:

leadergl
19-12-2003, 15:02
adesso si che mi sto incasinando la vita.......col MULTI-client non ho moooolta dimestichezza!!!!

Ti allego il codice con la gestione rete inclusa...........ma ci sto capendo poco!!!

il client deve inviare 1 solo dato al server, ovvero il PULSANTE PRENUTO, giusto???

ok

ma il server deve mandare PIU' dati al client, ovvero:

# il vettore (e ancora devo capire come)
# la carta da scopripre che si divide in:
1 - numero carta
2 - seme carta
# il punteggio

.....boh qui mi incasino..............mi serve aiuto
:confused:

leadergl
19-12-2003, 15:03
:D

matpez
20-12-2003, 02:28
Originariamente inviato da leadergl
scusa un'altra cosa......come si fa a personalizzare una:

Progress Bar

e una

Slider

??

voglio che abbiano non so, un'immagine particolare......tipo come fanno i lettori multimediali..............:rolleyes:

Quelle che VB ha di base nn si possono particolare!! :)

matpez
20-12-2003, 02:57
Scusa se ti rispondo di notte, ma sono arrivato a casa adesso, allora....

Secondo me, o meglio dire, secondo la mia esperienza, sarebbe meglio che tu creassi un "Server Dedicato", cioè un programma che server che una volta lanciato sta li e gestisce la partita!!

Ora dopo avere fatto il server dedicato (di cui hai anche l'esempio che ti postai tempo fa) devi "solo" fare il client.

Il client è solo di lettura e scrittura, cioè tutto quello che succede passa dal server, esempio banale, il mazzo di carte lo crea il server, lo mischia il server e poi quando il client fa la richiesta della carta lui manda il numero di carta e il seme, a quel punto il client intercetta i dati e mostra la carta e così via...

Adesso, il gioco molti-client nn è molto semplice da implementare, ma se arrivi alla fine di questo gioco sicuramente avrai fatto passi da gigante sia in programmazione sia in VB e io sarò molto contento, tanto che fra le altre cose nn ti servirò più come insegnante a livello pratico, ma solo a livello di architettura e struttura del programma! :)

Tornando a noi, ti avevo insengato a passare i dati in maniera "intelligente", cioè organizzati a modello di stringa separti da una bella virgona...esempio praticissimo, noi vogliamo implementare il famosissimo passaggio di carte tra il server ed il client, il server naturalmente ha il mazzo di carte e l'ordine con cui l'hai mischiato.

Dal Client 1 arriva la richiesta di passaggio carta (come simbolo avremo un bel cancelletto "#", PS: la procedura di richiesta è simile a quella del client, per cui la spiegherò solo una volta). Il server vrea una cosa del genere:
wskServer(Index).SendData "#," & recMazzo(nI).Seme & "," & recMazzo(nI).Numero
A questo punt abbiamo una stringa formattata in questa maniera (se il server passa il 7 di cuori): "#,1,7"

I Dati viaggieranno per la rete e andranno a stimolare la funzione DataArrival del nostro wskClient

A questo punto dentro a questa bella procedura noi abbiamo un grosso CASE che gestisce i nostri comandi (che noi abbiamo rappresentato con "#" per la richiesta di carta, ma possiamo benissimo utilizzarne altri).
Utiziamo una varibile Variant per immagazzinare lo splittamento dei nostri dati in arrivo:
Dim vVet as Variant
vVet=Split(vVet,",")

Ora vVet (dato che è una varibile variant e come tale assume tutti i tipi di varibile a cui noi l'abbiamo inizializzata) conterrà un bel vettore, da 0 a 2, lo 0 da noi è sempre l'operazione da svolgere.

Select Case vVet(0)
Case "#"
'qui noi svolgeremo i dati del programma, facendo bene attenzione
'che in vVet(1) abbiamo il seme, e nell'indice 2 abbiamo il numero di carta
End Select



Spero di averti fatto capire un po' meglio, se ci sono dubbi allora chiedi ancora, siccome sono le 4 del mattino io vado a nanna, ci sentiamo presto! :p

leadergl
20-12-2003, 09:43
grazie, finalmente ho capito perchè ogni tanto te ne uscivi con sta storia dello splittamento e del # !!!!

Quello che non mi va tanto a genio è di dover creare un SERVER dedicato e poi IL PROGRAMMA del sette e 1/2 !!!!!!

Vorrei che si facesse tutto in uno..........(a dire la vertià vorrei che uno nn dovesse neanche scegliere tra client e server, ma che capisse stesso il programma, cmq mi accontento)

Però nn vorrei dividerlo...........sto fatto del multi-client col gioco mi sta distruggendo i neuroni, ma allo stesso tempo mi piace una cifra....però mi serve molto aiuto per realizzare........nn l'ho mai fatto prima e quindi non sn preparato a ragionare in funzione RETE

leadergl
20-12-2003, 10:03
come si fa a decompilare un OCX???


ah mi manderesti il sorgente del tuo OCX delle carte?? anche in privato.....per studiarmelo un po!!!

:cool:

matpez
20-12-2003, 13:49
Originariamente inviato da leadergl
grazie, finalmente ho capito perchè ogni tanto te ne uscivi con sta storia dello splittamento e del # !!!!

Quello che non mi va tanto a genio è di dover creare un SERVER dedicato e poi IL PROGRAMMA del sette e 1/2 !!!!!!

Vorrei che si facesse tutto in uno..........(a dire la vertià vorrei che uno nn dovesse neanche scegliere tra client e server, ma che capisse stesso il programma, cmq mi accontento)

Però nn vorrei dividerlo...........sto fatto del multi-client col gioco mi sta distruggendo i neuroni, ma allo stesso tempo mi piace una cifra....però mi serve molto aiuto per realizzare........nn l'ho mai fatto prima e quindi non sn preparato a ragionare in funzione RETE

Adesso io nn sono un player di professione, ma io sono in un clan di UT e gioco ogni tanto, un mio amico è andato al WCG e nn si è piazziato male (in UT2003) per cui di giochi in rete bene o male ne so il concetto!

Questa frase nn è con tono incassato: se ti dico di fare un server dedicato, non dovresti fare di testa tua (dato che sei "l'alunno"), ci sarò un motivo perchè ti dico di fare il server dedicato ?

matpez
20-12-2003, 13:50
Originariamente inviato da leadergl
come si fa a decompilare un OCX???


ah mi manderesti il sorgente del tuo OCX delle carte?? anche in privato.....per studiarmelo un po!!!

:cool:

No mi spiace, io sono contrario all'etica dell'copyleft, per cui aiuto si, passare interi programmi (perchè nche un OCX o una DLL è un programma) no :(

Non prendertela a male, se vuoi consigli su come farne uno tu ok, ma prendere il mio e moddarlo no.

leadergl
20-12-2003, 16:04
vabbè non ara per moddarlo, era solo per capire come funzionano sti OCX, come si creano e come si gestiscono internamente....!!

Cmq non preoccuparti, no problem....ti capisco, anch'io sarei un po restio a dare in giro programmi o particolari funzioni ideati da me!

;)

Tutto ok! Cmq volevo averlo solo perchè su sto manuale del VB che ho...(che tra l'altro non serve a niente) no c'è spiegato praticamente un cavolo sugli OCX, dice che per farli si usa Class Module e poi devo programmarlo.....posso creare funzioni e cose varie....MA non mi dice come si fa a far comparire una nuova proprietà nella listadelle proprietà (quella sulla destra)..........del tipo CardNumbers che hai fatto tu........

e volevo capire come si faceva......e magari iniziare anche a crearmi qualche piccolo OCX tutto mio....

vabbè poi magari mi spiegherai come si fa....:)

matpez
20-12-2003, 19:02
Certo, ma per il sette e mezzo nn ti servono :)

So che vorresti in 5 minuti sapere tutto il VB ma nn è possibile, per cui una cosa alla volta!

Incominciamo a fare il sette e mezzo poi dopo impariamo a fare le dll e gli ocx :p

PS: forse nn l'hai letto, lo riporto qui sotto...

Adesso io nn sono un player di professione, ma io sono in un clan di UT e gioco ogni tanto, un mio amico è andato al WCG e nn si è piazziato male (in UT2003) per cui di giochi in rete bene o male ne so il concetto!

Questa frase nn è con tono incassato: se ti dico di fare un server dedicato, non dovresti fare di testa tua (dato che sei "l'alunno"), ci sarò un motivo perchè ti dico di fare il server dedicato ?

leadergl
21-12-2003, 11:02
cmq io non ho le idee molto chiare su quello che devo fare.......

ma nel codice del Client devo eliminare le variabili del

Vettore carte
Stato

e le altre cose.....
devo lasciare solo........cosa???? le carte del giocatore....e poi sarà il server a dire quale carta scoprire e con che valore....

giusto?? boh.....

cionci
21-12-2003, 11:17
Scusa, ma fare client e server in un solo eseguibile è sempre possibile...anche se virtualmente saranno parti distinte del codice a gestire le due cose... Solitamente si fa così...

leadergl
21-12-2003, 11:40
eh quello che mi chiedo io è:

non posso fare in modo che automaticamente il programma capisce se deve impostarsi come client o come server??

io sto adesso imparando e gentilmente MATPEZ, che ringrazio sempre tantissimo per i suoi insegnamenti, mi sta aiutando un casino per imparare, cmq dicevo io ora sto imparando non so se implementare una cosa così sia troppo complicato per me.....il fatto è che mi incuriosisce un casino........e po iquando si parla di programmazione mi piace molto imparare....

matpez
21-12-2003, 14:05
Originariamente inviato da cionci
Scusa, ma fare client e server in un solo eseguibile è sempre possibile...anche se virtualmente saranno parti distinte del codice a gestire le due cose... Solitamente si fa così...

Si certo cionci, ma ti assicuco che stando in mezzo ad amici che fanno un "mestiere" strano, cioè sono dei netgamer di professione...il che vuol dire che vengono pagati per giocare....bene o male ho visto tanti giochi grazie a loro, ho visto tante LAN è ho tirato su molti server di gioco!

Appunto questi server di gioco per aumentare dal 30 al 50% l'efficacia della trasmissioni di dati nel socket vengono appunto dedicati, cioè viene lanciato un processo a parte (infatti di solito la versione di qlc gioco che uno compra in negozio ne esiste una che di solito nn si sa e che nn si vende in negozio apposta progettata per il server, cioè solo il motore rete).

Adesso io risponderei a leadergl, il modo che uno riconosca se fa da server o client in automatico in verità ci sarebbe, giocare sul timeout, cioè sull'errore che il client quando si connette al teorico server nn trovo un socket in attesa lui da errore! Questo però è un problema perchè se il server nn si è ancora messo in attesa se la prendo tutti in quel posto... :)

Tornando al discorso delle carte, il client è solo di lettura, cioè il server gestisce tutto, il client richiede la prima carta, per cui il server li darà la carta con indice 1 nel record, il poi andrà avanti fino all'n indice...dopo tocca al secondo client, che fa la richiesta, il server darà la carta con indice n+1 ed il discorso si ripete così.

Dopo che il giocatore ha giocato manda il punteggio al server che lo conserva li in un angolino, quando anche il mazziere ha giocato allora (che come se fosse un normale giocatore manda il p. al server) a questo punto il server sa che hanno giocato tutti (perchè ha 4 punteggi) farà i controlli mazziere-giocatore e manderà i vari messaggi e la vincita direttamentre sui client!

matpez
21-12-2003, 16:02
Rimane cmq il fatto che cmq sempre sempre qls programma che io conosca (o gioco) che utilizza la rete, uno fa da server e preme su SERVER l'altro si connette! :p

POLiSh
21-12-2003, 16:18
ragazzi volevo entrare in discussione dato che anche io sono nel mondo dei netgamer e ogni tanto programmo...
ma che devo aggiungere oltre a quello che ha detto matpez

SERVER DEDICATO: server utilizzato solo ad una funzione specifica di solito lanciata in background per poter dare il meglio come prestazioni!
direi poi di fare il tutto come ha detto il mio caro collega
:muro: :muro: :muro: :muro:

:bsod: :O :sborone: :nonsifa: :eh: :idea: :yeah:

cionci
21-12-2003, 16:25
Sì, ma qui non si parla di un server che deve gestire centinaia di utenti...
Io ti assicuro che di giochi che fanno da server e da client nella storia ce ne sono stati tanti...poi avevano anche server dedicati, ma questo è un'altro discorso...

Ad esempio Hearts, che è un gioco semplicissimo e paragonabile a quello di leadergl fa da server e da client insieme...
Duke Nukem 3D faceva da server e da client
e poi tanti altri...

Per giocare a 7 e mezzo non c'è bisogno di prestazioni e il numero di client da gestire sono limitati (credo 8 max)...di conseguenza la soluzione più semplice è fare cleint e server nello stesso eseguibile...
Non è un FPS o un gioco di strategie che si deve tenere decine di MB di dati in memoria...

matpez
21-12-2003, 17:38
Adesso scusatemi solo 2 secondi, nn soffermiamoci per discutere se fare un server dedicato o no :) , nn è il caso infatti questo 3d è nato per apprendere VB ;)

Il servizio Server-Client diretto l'abbiamo già fatto in un esercizio, ora volevamo un po' alzare il tasso di dificoltà creando
1) un gioco + difficile (come il sette e mezzo, prima abbiamo fatto tris)
2) per appredere cose nuove...tipo il server dedicato (connesso a un multiclient)

Ora nn vorrei fare un battiribatti per decidere cosa fare, l'esercizio è: Sette e mezzo in rete su un modulo client e server dedicato!

Se poi uno mi dice che è inutile farlo posso concordare o no con la sua decisione :p , visto che siamo in un paese democratico :)

Ma rimane il fatto che un server dedicato, è sempre meglio di un server che deve gestire il lato sever ed il lato client, nn parliamo di FPS è vero, ma io nn ho detto solo giochi, TS2, mIRC sono per esempio programmi che girano utilizzando client e colegati a server dedicati!

Rimane il fatto che cmq rimanfa le prestazioni di un server dedicato fatto ad hoc sono migliori di un server nn dedicato...e qui prendi un qlc netgamer e ti dice la mia versione.

Sicuramente un gioco come Harts è un gioco vecchio in quanto le connessioni erano antiquate, ora internet bene o male è alla portata di tutti per uci cambia anche il sistema di organizzazione!

Esempio molto pratico, poi se vorrei che finissimo di parlare di questa cosa dai, altrimenti il povero leadergl si trova + confuso che mai!

Mettiamo che (come me) sono appassionato del gioco 7 e 1/2, benissimo, io ho un amico che ha ADSL ad IP fisso (lasciamo perdere FW che è una rete privata), io gli chiedo: "senti visto che io ho una 640 normale, nn è che potrei metterti un server nel tuo pc dedicato che tanto nn ti riba banda ma permette a noi di giocare quando abbiamo voglia e tu intanto lavori o fai altro senza bisogno di giocare anche tu?" Sicuramente nn mi dirà di no, e noi tornati a casa al sabato sera magari ci connettiamo al suo server e giochiamo a carte.

cionci
21-12-2003, 18:18
Originariamente inviato da matpez
Ma rimane il fatto che un server dedicato, è sempre meglio di un server che deve gestire il lato sever ed il lato client, nn parliamo di FPS è vero, ma io nn ho detto solo giochi, TS2, mIRC sono per esempio programmi che girano utilizzando client e colegati a server dedicati!
mIRC ha decine di migliaia di utenti, non max 8...
Comunque parlavo di Hearts solo perchè era simile... Guarda ad esempio Quake2...ok, è vecchio anche quello, ma ce ne sono anche altri...
Originariamente inviato da matpez
Rimane il fatto che cmq rimanfa le prestazioni di un server dedicato fatto ad hoc sono migliori di un server nn dedicato...e qui prendi un qlc netgamer e ti dice la mia versione.
Sì, sempre che ci sia una macchina dedicata a farlo girare... Se la macchina svolge altri compiti...allora no...
E poi comunque nel caso del 7 e 1/2 non hai bisogno di prestazioni...
Non ti credere che io non abbia mai giocato in rete ;)
Diciamo che io ho fatto un po' un precursore del netgaming e dei Lan Party... Tempo fa ('96) collaboravo con un internet point e stavamo tutta la notte a giocare in 8 su Duke Nukem e Quake...
Addirittura giocavo tramite il cavo parallelo a F1 GP 2...
Originariamente inviato da matpez
Mettiamo che (come me) sono appassionato del gioco 7 e 1/2, benissimo, io ho un amico che ha ADSL ad IP fisso (lasciamo perdere FW che è una rete privata), io gli chiedo: "senti visto che io ho una 640 normale, nn è che potrei metterti un server nel tuo pc dedicato che tanto nn ti riba banda ma permette a noi di giocare quando abbiamo voglia e tu intanto lavori o fai altro senza bisogno di giocare anche tu?" Sicuramente nn mi dirà di no, e noi tornati a casa al sabato sera magari ci connettiamo al suo server e giochiamo a carte.
Arrivi a casa ti trovi con i tuoi amici su ICQ... "Giochiamo a 7 e 1/2 ?", "Ok, andiamo", "Faccio io da server, il mio ip è a.b.c.d","K, arrivo"...

Io non dico che il server insieme al client è meglio...dico che per questa situzione (il gioco del 7 e 1/2) è più adatto...
Il server dedicato avrebbe senso solamente se volessi gestire + partite contemporaneamente...

Ho detto quello che volevo dire...quindi vi lascio alle vostre lezioni...

Ciao

matpez
22-12-2003, 01:09
Cmq mi hai tirato in ballo giochi come Hearts e Quake2 che sono giochi nati circa 5 anni fa....i gioci di adesso hanno tutta un altra configurazione ed un altra gestione della rete!

Rimane il fatto che tanto se un server deve gestire + di una connessione (cioè nn è diretta al client) allora il serve dedicato ha delle prestazione migliori rispetto al server nn dedicato....queste prestazioni migliorano (e qui hai ragione cionci) a al crescere degli utenti.

Cmq facciamo così per leadergl, lui mi prenseta il modulo server a parte...una volta finito se ha voglia di fare un casinò in rete :) , carica in rete il server su una shell e ci gioca con tante partite in simultane :p , se per caso nn gli va l'idea (come probabile :) ) allora prende il server e lo mette nel winsock del server e lo separa da quello del client :p

PS: mi fa piacere parlare con te cionci, c'è sempre tanto da imparare in queste "discussini" :)

PS2: complimenti per essere diventato moderatore :oink:

PS3: io sono un giocatore di UT, cioè...definirmi giocatore è un parolone, diciamo che quando nn programma mi rilasso magari qlc mezzora a fare partitne online con i miei amici/compagni di clan. Se un giorno ti va (e se sai giocare ad UT) magari possiamo fare due spari in amicizia :)

PS4: se mi volete insultare di "persona" mi trovate in mIRC 24 ore su 24 (o almeno il nick c'è, se poi io nn ci sono o dormo è un altro conto) nella rete di quakenet nel chan: #gre.it , il mio nick è SLAYER.

Appena leadergl torna continuiamo nella lezione sulla rete, vediamo se piano piano riusciamo a farci i partitoni d'azzardo anche in rete :) :D :)

cionci
22-12-2003, 03:42
Originariamente inviato da matpez
i gioci di adesso hanno tutta un altra configurazione ed un altra gestione della rete!
Ma certo e per i giochi di adesso è ovvio che serve un server dedicato...qui non ci piove...ma per il gioco del 7 e mezzo mi sembra un po' troppo ;) Soltanto questo...
Poi fare un server incluso nel client permette di scoprire tante nuove tecniche di programmazione... Ad esempio il multi-threading !!!

leadergl
22-12-2003, 13:47
wow sono mancato un giorno ed è successo tutto sto casino.......................mammamia!!!!

Cmq sinceramente, io sono mooooolto confuso su quello che devo fare...(diciamo k nn c sto a capì niente).....ed infatti non sto riuscendo ad andare avanti !!!

Che devo fare per fare un server dedicato???

Cioè devo fare 2 programmi distinti in realta??
uno che c'ha solo la grafica con le carte e cazzi vari, e l'altro che è il gioco vero e proprio (cm quello che ho già cominciato e k ho postato)???

boh.....

leadergl
22-12-2003, 14:29
mi sto alterando........
come si fa a passare alla procedura un componente??
esempio:
ho la procedura daicarta():


Private Sub daiCarta()
'Scopre una nuova carta sul tavolo
'e gli assenga il valore dell'elemento del vettore

nCarta = nCarta + 1
nVettore = nVettore + 1
Card1(nCarta).CardNumber = Vettore(nVettore).nNumero
Card1(nCarta).CardType = Vettore(nVettore).nSeme
Card1(nCarta).Visible = True
'Controlla se il giocatore ha sballato!
Call btnAltra_controllo
End Sub

VORREI CHE DIVENTI TIPO:

Private Sub daiCarta(carta as card)
'Scopre una nuova carta sul tavolo
'e gli assenga il valore dell'elemento del vettore

nCarta = nCarta + 1
nVettore = nVettore + 1
Carta(nCarta).CardNumber = Vettore(nVettore).nNumero
Carta(nCarta).CardType = Vettore(nVettore).nSeme
Carta(nCarta).Visible = True
'Controlla se il giocatore ha sballato!
Call btnAltra_controllo
End Sub

Ma mi trova mille scuse per non farlo..........why???:muro:

leadergl
22-12-2003, 14:30
mi serve per fare in modo che il server scopra le carte di un determinato giocatore.....

matpez
22-12-2003, 15:17
Ben tornato :D

1) Si devi fare dueo programmi distinti, il server nn ha nulla, ma è in realtà il cuore del programma, il client manda e riceve informazioni che poi il server elabora.

2) Anzichè fare la procedura passando come parametro la carta, basta che gli passi come parametro l'indice della carta, cioè se sta giocando il giocatore 1 il range di carte sarà 1 - 10, se gioca il 2 sarà 11 - 20 etc etc!

Cmq per ora fammi questa cosa, il client (in lettura) è già pronto, fai il server, cioè crea un programma a parte che si metta in attesa...limitalo ad una connessione per adesso, così facciamo le prove!
Quando nel client premi su CARTA, il server accetta la tua richiesta e manda la carta e la visualizzi sul client....quasto ti è chiaro +/- ?

Se si mettiti all'opera, aspetto gli eseguibili, altrimenti chiedi pure...sono qui apposta! :p

matpez
22-12-2003, 15:28
Ti posto un esempietto di come bene o male deve essere (i numeri sono casuali) :)

leadergl
22-12-2003, 15:36
vabbe il server praticamente deve avere solo il vettore con le carte, lo riempie, lo mischia e attende!!!!

giusto?

ma poi che è che decide di chi è il turno??nessuno??

leadergl
22-12-2003, 15:37
nel senso che fatto così chiunque può chiedere la carta..........

matpez
22-12-2003, 15:40
Originariamente inviato da leadergl
nel senso che fatto così chiunque può chiedere la carta..........

Non ci riesci proprio da solo ? Dai sforzati ancora un pochino :)

PS: leggi la mail! :p

leadergl
22-12-2003, 16:02
no non ce l'ho mirc

matpez
22-12-2003, 16:15
Originariamente inviato da leadergl
no non ce l'ho mirc

Installalo, nn penso che per 1 mb muori :D (DOWNLOAD (http://www.ircresource.it/mirc/mirc612.exe) )

Sarebbe molto + comodo scriversi le cose corte li, a meno che nn voglia arrivare a senior member solo con questo 3d :p :oink: :) :D ;) :cool: :oink: :p :O

leadergl
22-12-2003, 16:24
vedi se sto iniziando a capire e migliorare.....tiè

leadergl
22-12-2003, 16:33
guarda k sto in mirc...........sbrigati

leadergl
22-12-2003, 22:48
ho due problemi:

1 - non si aggiorna la variabile STATO, k controlla il punteggio
2 - mi esce sempre l'ASSO DI PICCHE

e non riesco a capire il perchè....sembra tutto in regola....cavolo!

ti allego il codice...per favore aiutami :muro:

matpez
22-12-2003, 23:54
Ora va :oink:

leadergl
24-12-2003, 13:54
allora, il programmino prosegue.....non troppo velocemente ma prosegue....

ho avuto qualche problemino a mandare dal SERVER al Client più SendData in successione....mi creava un po di casini con la variant vInput.....cmq risolto

Ho aggiunto:

1 - i turni
2 - gestione pulsante BASTA
3 - Passo del turno se SBALLA

DEVO AGGIUNGERE:

che durante il gioco si visualizzano anche le carte degli avversari........qui sono sicuro che trovarò dei casini......per vari motivi:

1 - ancora devo decidere cm gestire le altre carte nel gioco
2 - mandare il segnale a tutti facendo visualizzare carte diverse......

cmq è in PROGRESS.....

matpez
24-12-2003, 14:22
Sono veramente felice :)

A presto, fammi sempre sapere i tuoi passi :p

leadergl
24-12-2003, 15:19
attualmente ho un problema.......
ho fatto in modo che quando premo ALTRA CARTA, la carta che mi esce viene visualizzata anche agli altri giocatori, e fin qui tutto ok

ma quando cerco di fare la stessa cosa durante la distribuzione iniziale delle carte....beh mi si inceppa tutto......

praticamente i dati inviati si fondono.....tipo

Distribuisco le carte, e quindi invia una cosa tipo:

sendData= "#," & vettore.numero & "," & vettore.seme
(vabbè..nn esattamente..ma cmq così)

successivamente per mostrare anche agli altri lancio una funzione che invia la "stessa" cosa agli ALTRI giocatori..così:



Private Function AltriGiocatori(nIndex As Integer)
Dim nI As Integer

For nI = 1 To nConnessioni
If nI <> nIndex Then
Server(nI).SendData "O," & Vettore(nVettore).nNumero & "," & Vettore(nVettore).nSeme
End If
Next nI

End Function

escludendo nIndex che sarebbe il "giocatore di turno".......

quindi alla fine lui invia il primo SendData e poi Quest'ultimo......ma i due si fondono in una cosa del genere

SendData= "#,numeroA,numeroBO,numeroA,numeroB"

che è la fusione di:

SendData="#,numeroA,numeroB" con
SendData="O,numeroA,numeroB"

perchè mi fa sto casino?????
mi manca "solo" questo..........

leadergl
24-12-2003, 15:21
quello che ho capito è che ad ogni invio deve corrispondere una risposta....altrimenti se faccio 2 invii lui li unisce in un'unico solo........


MA QUESTO PER ME E' NOCIVO........help.....ti allego il codice

cionci
24-12-2003, 15:42
Originariamente inviato da leadergl
quello che ho capito è che ad ogni invio deve corrispondere una risposta....altrimenti se faccio 2 invii lui li unisce in un'unico solo........


MA QUESTO PER ME E' NOCIVO........help.....ti allego il codice
altro che nocivo...è utile !!! Se un giocatore non risponde entro un certo timeout allora significa che l'utente è down...

leadergl
24-12-2003, 16:01
e se gli faccio rispondere dal Client con una risposta "inutile" nel senso che il server non la gestirà??

del tipo

client.senddata = "ok"

che per il server nn ha alcun significato e risvolto....può funzionare?

oppure dovrei fare questo ed in più aggiungere un ritardo prima di inviare l'altro dato...

come si fa ad introdurre una pausa in un programma??

matpez
24-12-2003, 16:09
Originariamente inviato da cionci
altro che nocivo...è utile !!! Se un giocatore non risponde entro un certo timeout allora significa che l'utente è down...

Eggià :p

Ora veramento nn posso controllarti il codice, se vuole farlo cionci lo faccia pure, io sono impeganto con i preparativi.

Altrimenti ti rispondo al 27 e ci pensi in questi 2 giorni!

leadergl
24-12-2003, 16:17
come faccio ad introdurre una pausa.....

ho cercato con

WAIT
Delay

...ma niente..

matpez
24-12-2003, 16:23
'This project needs a button
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Me.Caption = "Your system will sleep 5 sec."
'Sleep for 5000 milliseconds
Sleep 5000
Me.Caption = ""
End Sub
Private Sub Form_Load()
Me.Caption = ""
Command1.Caption = "Sleep ..."
End Sub

leadergl
24-12-2003, 16:26
che dici funziona se introduco una pausa??
o sto solo perdendo tempo?!?

dimmi se sono sulla strada giusta.........

cionci
24-12-2003, 16:43
Secondo me la Sleep non è il metodo giusto...meglio implementare un Timer...

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbcontimercontrol.asp

Se entro la scadenza del timer non hai ricevuto una risposta allora escludi l'utente dal gioco...e disattivi il timer...

leadergl
24-12-2003, 17:17
niente.....non ci riesco e mi sono anche rotto le BALL nel provarci........riprendo dopo natale!!!

ora....STO IN VACANZA.....è questo che c'è scritto sull'uscio del mio cervello

:cool: :cool: :cool: :cool: :cool: :cool: :cool: :cool: :cool:

matpez
24-12-2003, 17:40
Originariamente inviato da cionci
Secondo me la Sleep non è il metodo giusto...meglio implementare un Timer...

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbcontimercontrol.asp

Se entro la scadenza del timer non hai ricevuto una risposta allora escludi l'utente dal gioco...e disattivi il timer...

Se deve implementare un timeout si, avevo capito che lui volesse implementare un delay tra una spedizione e l'altra :p

leadergl
24-12-2003, 17:42
volevo solo un modo per poter fare più "spedizioni" senza però ricevere una risposta.......

è un bastardo sto WINSOCKET.......manco a natale si lascia un po andare...:D

leadergl
03-01-2004, 12:52
ok raga son tornato.....riprendiamo il nostro piccolo discorso e programmino...........io qui sono in fase di stallo.......mi serve help!!!!

matpez
03-01-2004, 13:07
Originariamente inviato da leadergl
ok raga son tornato.....riprendiamo il nostro piccolo discorso e programmino...........io qui sono in fase di stallo.......mi serve help!!!!

Io sono operativo da domani! Prova ancora oggi a fare qlc, altrimenti proviamo a risolverlo assieme! :)

leadergl
05-01-2004, 22:55
ehi ciao, qui nessun progresso............aiutami ti prego :muro: :muro:

voglio finirlo sto programma.........ma sto WinSocket è bastardo!

matpez
05-01-2004, 23:06
Se nn ho capito male era il famoso problema della spedizioni di dati che si accavallavano!

Io ho fatto una prova, ma nn mi da il tuo errore, bho prova a vedere anche tu!

Lanci il server e poi apri 3 client, li connetti tutti e 3 dopo di che premi il tasto command1, al client che ha premuto il tasto passo la stringa "ciao", agli altri passa la l'indice di connessione!

Fammi sapere!

leadergl
05-01-2004, 23:18
guarda...ti mando il file a cui siamo arrivati

leadergl
05-01-2004, 23:19
il problema viene quando devo inviare a TUTTI i giocatori le carte che vengono distribuite all'inizio.....mi da errore

leadergl
05-01-2004, 23:21
e poi ci sarebbe da correggere qualcosina nella distribuzione delle altre carte...ma questo me lo vedo io!!!

è che quando do le carte se provo a distribuirle a tutti mi succedono i casini col WinSocket.......e nn sono riuscito a trovare una soluzione

matpez
05-01-2004, 23:28
Ma hai guardato il mio test?

leadergl
06-01-2004, 12:26
si ho visto il tuo esempio......ma la situazione è un po diversa!!
In quanto il E' IL SERVER che deve inviare i dati delle carte ed il casino succede perche dopo aver inviato la PRIMA carta del Primo Giocatore e tutti e 4, e deve inviare la PRIMA Carta del Secondo Giocatore sempre a tutti, si trova nella situazione di dover mandare due SendData agli altri computer senza ricevere nessuna risposta.......poichè:

SERVER:
INVIA A COSA
1 carta1
2 carta1
3 carta1
4 carta1

1 carta2
2 carta2
3 carta2
4 carta2

quelli in grassetto li invia normalmente e per gil altri fa un ciclo però quando invia la CARTA2, tutti i CLIENT si trovano in ingresso altri dati che accoppiano a quelli precedentemente inviati per la CARTA1 e succede il casino.......

matpez
06-01-2004, 13:10
Controllerò più tardi!

Ora purtroppo devo andare a trovare un mio partente in ospedale!

Sorry, ti dico qlc stasera se riesco a guardare il codice ;)

leadergl
08-01-2004, 10:58
ehi.....k. fine hai fatto?!?! l'hai dato uno sguardo??

matpez
08-01-2004, 13:13
Originariamente inviato da leadergl
ehi.....k. fine hai fatto?!?! l'hai dato uno sguardo??

Si scusa ma esco di casa al mattino e torno alla sera distrutto...oggi sono a casa, provo a guardare!

ReeM 32
07-03-2007, 15:22
Ciao...:D X domani devo svolgere qst esercizio...Se qlcn lo sa fare lo può scrivere su qst forum X FAVORE? Sn disperata..:muro: ..La traccia è :

" Dato in input un testo alfabetico, riscriverlo trasformando le lettere maiuscole con le minuscole":confused:

Dovreste risolverlo soltanto con MID e eventualmente LEN e seguendo la tabella ASCII...SOLO LA CODIFICA IN VISUAL BASICA xkè Java nn lo usiamo...Grazie 1000 a ki lo svolge!:D

ENTRO STASERA GRAZIE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;)

matpez
07-03-2007, 18:19
ehhehehe, ecco a te... se hai qlc dubbio chiedimi pure!! :p


PS: però così nn vale!!!!! :oink:

POLiSh
08-03-2007, 13:45
ehhehehe, ecco a te... se hai qlc dubbio chiedimi pure!! :p


PS: però così nn vale!!!!! :oink:

teo
w java abbasso vb :P :oink: :ciapet:

issima07
02-03-2009, 13:57
Scusatemi sono nuova posso chiedervi di farmi cercare di capire come si fa un programma in visual basic con le funzioni?
praticamente devo realizzare una funzione che si chiama FNCGIORNO, che ha come parametreo formale DATAODIERNA e resituisce il nome del giorno in lettere. Non ho capito proprio come si fa

matpez
02-03-2009, 14:09
Scusatemi sono nuova posso chiedervi di farmi cercare di capire come si fa un programma in visual basic con le funzioni?
praticamente devo realizzare una funzione che si chiama FNCGIORNO, che ha come parametreo formale DATAODIERNA e resituisce il nome del giorno in lettere. Non ho capito proprio come si fa


VB6 o VB.NET ?

issima07
02-03-2009, 14:57
VB6

matpez
02-03-2009, 15:17
Qui ti incollo il codice che volevi, però se vuoi imparare non puoi fare solo un copia/incolla ma devi capire cosa c'è scritto. Se vuoi possiamo commentarlo insieme, ma devi dirmi a che livello sei di programmazione e se hai mai aperto VB6.

PS: la funzioni che vuoi tu si può fare in due modi diversi, il primo è più manuale ma ti permette di giocare meglio con il risultato della funzione. Il secondo è il sistema "avanzato" che io sconsiglio se sei neofita.

Private Sub Form_Load()

MsgBox FNCGIORNO_1(Date)
MsgBox FNCGIORNO_2(Date)

End Sub

Private Function FNCGIORNO_1(ByVal DATAODIERNA As Date) As String

Dim sGiorno As String


Select Case Weekday(DATAODIERNA, vbMonday)
Case 1: sGiorno = "Lunedì"
Case 2: sGiorno = "Martedì"
Case 3: sGiorno = "Mercoledì"
Case 4: sGiorno = "Giovedì"
Case 5: sGiorno = "Venerdì"
Case 6: sGiorno = "Sabato"
Case 7: sGiorno = "Domenica"
End Select

FNCGIORNO_1 = sGiorno

End Function

Private Function FNCGIORNO_2(ByVal DATAODIERNA As Date) As String

Dim nWeekDay As Integer


nWeekDay = Weekday(DATAODIERNA, vbMonday)
FNCGIORNO_2 = WeekdayName(nWeekDay, False, vbMonday)

End Function

issima07
02-03-2009, 15:29
XKE SI SCRIVE VBMONDAY?
Cmq sono al terzo anno di ragioneria e da qualche mese abbiamo iniziato a utilizzare vb 6

matpez
02-03-2009, 15:43
XKE SI SCRIVE VBMONDAY?

Quel parametro serve ad indicare qual'è il primo giorno della settimana. In Italia usiamo come convenzione il Lunedì, ma in america è la Domenica.

vbUseSystem: 0 Utilizza l'impostazione NLS API.
vbSunday: 1 Domenica (impostazione predefinita)
vbMonday: 2 Lunedì
vbTuesday: 3 Martedì
vbWednesday: 4 Mercoledì
vbThursday: 5 Giovedì
vbFriday: 6 Venerdì
vbSaturday: 7 Sabato


Io solitamente uso la "costante" (quindi vbMonday) perchè è più facile da leggere nel codice, ma nulla ti vietava di mettere il valore 2 al posto di vbMonday.


.