Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [ultimo passaggio] riavviare routine dalla routine stessa!
Forum - C# / VB.NET - [ultimo passaggio] riavviare routine dalla routine stessa!

Avatar
Shark (Normal User)
Rookie


Messaggi: 35
Iscritto: 12/06/2014

Segnala al moderatore
Postato alle 5:24
Mercoledì, 18/06/2014
public sub CPUgaming
           CPUplay = dstr.Next(1, 3)
        Select Case CPUplay
            Case 1
               if  label3.Visible =True then
                Else
                CPUgaming()                 <<---------- se la label è nascosta ripeti la sub da capo..
                End if
            Case 2
                        UGUALE MA CON LABEL SUCCESSIVA
                   end select
end sub

mi da, quando deve fare l'operazione "CPUgaming" :

Impossibile intercettare l'eccezione. Il programma in debug non può proseguire e le espressioni non possono essere valutate.
System.StackOverflowException


non ho trovato nulla su internet ne inglese ne italiano,
perfavore oltre ai link che sicuro mi arriveranno, scrivetemi il comando/procedura direttamente please, giuro i link li vado a vedere!

Ultima modifica effettuata da Shark il 18/06/2014 alle 5:25


Conosco bene il grande e possente Google, ma se chiedo qui è perchè non ho trovato nulla......
PM Quote
Avatar
mattia1481 (Member)
Pro


Messaggi: 84
Iscritto: 03/11/2008

Segnala al moderatore
Postato alle 7:39
Mercoledì, 18/06/2014
L'eccezione System.StackOverflowException si verifica poiché nella tua procedura viene a mancare la condizione che ne permette l'uscita, praticamente va in loop.


Mattia Riviera
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5720
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:37
Mercoledì, 18/06/2014
Il problema è che non ha senso, in questo caso, eseguire la funzione da sè stessa.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Shark (Normal User)
Rookie


Messaggi: 35
Iscritto: 12/06/2014

Segnala al moderatore
Postato alle 13:43
Mercoledì, 18/06/2014
perchè non ha senso? il numero di casi è gestito random, nel caso (come da esempio) il caso fosse 2,    e la label nascosta riparta da capo, dove magari fa 1, la label è visibile e ci fa su le sue operazioni...



Conosco bene il grande e possente Google, ma se chiedo qui è perchè non ho trovato nulla......
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5720
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:51
Mercoledì, 18/06/2014
Allora ... cerca di chiarire il problema più generale perché la chiamata ricorsiva di una funzione è utilizzata per scopi specifici e segue regole precise.

Non si applica a tutto e magari non a quello che vorresti fare tu.

Quindi, spiega il perché ti serve la ricorsione ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Shark (Normal User)
Rookie


Messaggi: 35
Iscritto: 12/06/2014

Segnala al moderatore
Postato alle 15:57
Mercoledì, 18/06/2014
ok allora, ci sono tot label visibili con dei valori all'interno,(che si nascondono e prendono valore zero se il numero all'interno è < 0)  il computer deve scegliere una label e sottrargli un valore random da uno a label.text.

io ho provato con il comando select case, dove in base a un numero random da uno al totale delle caselle visibili, fa:  SE la casella è visibile sottraile un numero da uno a label.text

volevo mettere appunto un else che nel caso in cui la label non sia visibile rifacesse partire la procedura sopra descritta...


Conosco bene il grande e possente Google, ma se chiedo qui è perchè non ho trovato nulla......
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5720
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:22
Mercoledì, 18/06/2014
E non si fa così !  Hai usato la ricorsione al posto di un ciclo (come pensavo) ... ed è un grave errore ...

All'interno della funzione devi usare un ciclo che ripeta quello che vuoi fare sulla label da cui esci solo se l'operazione è stata fatta su una label visibile.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Shark (Normal User)
Rookie


Messaggi: 35
Iscritto: 12/06/2014

Segnala al moderatore
Postato alle 20:04
Mercoledì, 18/06/2014
Grazie mille! ho risolto così!


Dim arrai As Integer()
            
arrai = New Integer (11) {a1, b1, c1, d1, k1, f1, g1, h1, i1, l1, m1, n1}
            
    For Each valore In arrai
                                                    
        if  label3.Visible =True then
            a1 -=(chgrnd.Next(1, a1+1))
            Label3.text = CStr(a1)
            If label3.text <= 0 Then
                label3.hide
                Label3.text = 0
                tot -=1
            End If
        exit For
        End if
              if  label4.Visible =True then
            b1 -=(chgrnd.Next(1, b1+1))
            Label4.text = CStr(b1)
            If label4.text <= 0 Then
                label4.hide
                Label4.text = 0
                tot -=1
            End If
        exit For
        End if
                
        If  label5.Visible = True Then
            c1 -=(chgrnd.Next(1, c1+1))
            Label5.text = CStr(c1)
            If label5.text <= 0 Then
                label5.hide
                label5.Text = 0
                tot -=1
            End If
        exit For
        End If


e così via fino all'ultima label

ultima quest, ma se volessi fare in modo che la la scelta della label su cui agire fosse casuale?


Conosco bene il grande e possente Google, ma se chiedo qui è perchè non ho trovato nulla......
PM Quote