Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-05-2013, 20:15   #1
Heretic Curse
Member
 
Iscritto dal: Mar 2011
Messaggi: 125
[Python] Nuovo problema

Fare questo gioco di carte virtuale mi sta davvero mettendo in difficoltà

Codice:
# !/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import random

class Carta:
   
   ListaSemi = ["Fiori", "Quadri",  "Cuori", "Picche"]
   ListaRanghi = ["impossibile", "Asso", "2", "3", "4", "5", "6", \
                  "7", "8", "9", "10", "Jack", "Queen", "King"]
   
   def __init__(self, Seme = 0, Rango = 0):
    self.Rango = Rango
    self.Seme = Seme
   
   def __str__(self):
    return str(self.ListaRanghi[self.Rango]) + " di " + str(self.ListaSemi[self.Seme])
   
   def __cmp__(self, Altro):
    if self.Seme > Altro.Seme: return 1
    if self.Seme < Altro.Seme: return -1
    
    if self.Rango == 1 and self.Rango != Altro.Rango: return 1
    if self.Rango > Altro.Rango: return 1
    if self.Rango < Altro.Rango: return -1
    return 0
   
class Mazzo:
  
  def __init__(self):
   self.Carte = []
   for Seme in range(4):
    for Rango in range(1, 14):
     self.Carte.append(Carta(Seme, Rango))
  
  def __str__(self):
    s = ""
    for i in range(len(self.Carte)):
     s = s + " "*i + str(self.Carte[i]) + "\n"
    return s
  
  def Mescola(self):
   NumCarte = len(self.Carte)
   for i in range(NumCarte):
    j = random.randrange(i, NumCarte)
    x = 0
    self.Carte[x] = self.Carte[i]
    self.Carte[i] = self.Carte[j]
    self.Carte[j] = self.Carte[x]



  def RimuoviCarte(self, Carta):
    if Carta in self.Carte:
      self.Carte.remove(Carta)
      return 1
    else:
     return 0    
  
  def PrimaCarta(self):
    return self.Carte.pop()

  def EVuoto(self):
    return (len(self.Carte) == 0)

  def Distribuisci(self, ListaMani, NumCarte=999):
   NumMani = len(ListaMani)
   for i in range(NumCarte):
    if self.EVuoto(): break
    Carta = self.PrimaCarta()
    Mano = ListaMani[i%NumMani]
    Mano.AggiungeCarta(Carta) 


class Mano(Mazzo):
 
  def __init__(self, Nome=""):
   self.Carte = []
   self.Nome = Nome    
  
  def __str__(self):
    s = "La mano di " + self.Nome
    if self.EVuoto():
      s = s + " è vuota\n"
    else:
      s = s + " contiene tali carte:\n"
    return s + Mazzo.__str__(self)

  def AggiungeCarta(self, Carta):
   self.Carte.append(Carta) 

class GiocoDiCarte:
  def __init__(self):
    self.Mazzo = Mazzo()
    self.Mazzo.Mescola()

class GiocoOldMaid(GiocoDiCarte):
  
  def TrovaVicino(self, Giocatore):
    NumMani = len(self.Mani)
    for Prossimo in range(1, NumMani):
      Vicino = (Giocatore + Prossimo) % NumMani
      if not self.Mani[Vicino].EVuoto():
        return Vicino

  def GiocaUnTurno(self, Giocatore):
    if self.Mani[Giocatore].EVuoto:
      return 0
    Vicino = self.TrovaVicino(Giocatore)
    CartaScelta = self.Mani[Vicino].PrimaCarta()
    self.Mani[Giocatore].AggiungeCarta(CartaScelta)
    print "Mano di", self.Mani[Giocatore].Nome, ": scelta", CartaScelta
    Conteggio = self.Mani[Giocatore].RimuoveCoppie()
    self.Mani[Giocatore].Mescola()
    return Conteggio

  def StampaMani(self):
    for Mano in self.Mani:
      print Mano

  
  def RimuoveTutteLeCoppie(self):
    Conteggio = 0
    for Mano in self.Mani:
      Conteggio = Conteggio + Mano.RimuoveCoppie()
    return Conteggio
  
  def Partita(self, Nomi):
    self.Mazzo.RimuoviCarte(Carta(0, 12))

    self.Mani=[]
    for Nome in Nomi:
      self.Mani.append(ManoOldMaid(Nome))

    self.Mazzo.Distribuisci(self.Mani)
    print "---------- Le carte sono state distribuite"  
    self.StampaMani()

    NumCoppie = self.RimuoveTutteLeCoppie()
    print "---------- Coppie scartate, inizia la partita"
    self.StampaMani

    Turno = 0
    NumMani = len(self.Mani)
    while NumCoppie < 25:
      NumCoppie = NumCoppie + self.GiocaUnTurno(Turno)
      Turno = (Turno + 1) % NumMani

    print "---------- La partita è finita"
    self.StampaMani()

class ManoOldMaid(Mano):

  def RimuoveCoppie(self):
    Conteggio = 0
    CarteOriginali = self.Carte[:]
    for CartaOrig in CarteOriginali:
      CartaDaCercare = Carta(3-CartaOrig.Seme, CartaOrig.Rango)
      if CartaDaCercare in self.Carte:
        self.Carte.remove(CartaOrig)
        self.Carte.remove(CartaDaCercare)
        print "Mano di %s : %s elimina %s" % (self.Nome, CartaOrig, CartaDaCercare)
        Conteggio = Conteggio + 1
    return Conteggio

import Carta
Gioco = GiocoOldMaid()
Gioco.Partita(["Howard", "Sheldon", "Leonard"])
Ora viene il bello: Sublime Text non mi restituisce alcun errore, ne mi scrive "Finished in x seconds with exit code y", semplicemente me lo esegue fino a stamparmi "---------- Coppie scartate, inizia la partita", poi più nulla. Eppure non riesco seriamente a trovare errori in ciò che segue (anche se ovviamente ci saranno).

Volevo inoltre chiedervi, le prime 2 righe di codice che ho scritto cosa significano? Perché il codice presentava un errore e ho trovato googolando di usare quelle righe come soluzione, ma non ne ho compreso il "senso".

Spero l'indentazione vi vada bene, è quella che mi mette in automatico l' IDE.

Ultima modifica di Heretic Curse : 16-05-2013 alle 18:05.
Heretic Curse è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2013, 21:30   #2
pabloski
Senior Member
 
Iscritto dal: Jan 2008
Messaggi: 8406
Le prime due righe indicano:

1. l'eseguibile dell'interprete python da usare per far girare lo script
2. l'encoding usato per i file sorgente del tuo programma ( nel tuo caso è la codifica nostrana con l'aggiunta del simbolo € )
pabloski è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2013, 22:12   #3
Heretic Curse
Member
 
Iscritto dal: Mar 2011
Messaggi: 125
Quote:
Originariamente inviato da pabloski Guarda i messaggi
Le prime due righe indicano:

1. l'eseguibile dell'interprete python da usare per far girare lo script
2. l'encoding usato per i file sorgente del tuo programma ( nel tuo caso è la codifica nostrana con l'aggiunta del simbolo € )
ok grazie

Ultima modifica di Heretic Curse : 14-05-2013 alle 05:08.
Heretic Curse è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2013, 14:10   #4
Heretic Curse
Member
 
Iscritto dal: Mar 2011
Messaggi: 125
Qualcuno riesce ad aiutarmi con l'altro problema?
Magari è anche una buona occasione perché io cominci ad usare un debugger, consigli?
Heretic Curse è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2013, 14:23   #5
pabloski
Senior Member
 
Iscritto dal: Jan 2008
Messaggi: 8406
Pdb è un buon debugger. Non si trova/trovava roba per neofiti, ma sono incappato in questo post http://pythonconquerstheuniverse.wor...ing-in-python/ che spiega le cose in maniera adatta ai neofiti.
pabloski è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2013, 16:52   #6
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da Heretic Curse Guarda i messaggi
Qualcuno riesce ad aiutarmi con l'altro problema?
Magari è anche una buona occasione perché io cominci ad usare un debugger, consigli?
Magari è un'ottima occasione per cominciare a usare unit-testing e/o Test Driven Development. Così ti scordi pure cos'è un debugger.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2013, 19:23   #7
Heretic Curse
Member
 
Iscritto dal: Mar 2011
Messaggi: 125
Ti ringrazio per il BTD in realtà non l'ho ancora appreso, lo farò di sicuro (quante cose da imparare per programmare ), ma leggendo un esempio sul web ho scoperto che mi sono dimenticato di utilizzare import. Il problema tuttavia è che non so cosa devo importare: sul libro "Pensare in Python " riportavano import Carta (come ho scritto in rosso nel topic principale), ma ovviamente mi riporta un errore:
Codice:
ImportError: No module named Carta
Il fatto è che non ho mai usato import se non per importare i soliti moduli come string, random e math, e provando a mettere al posto di Carta le classi che ho definito nel codice, ancora non ottengo risultati (com'era da aspettarsi, ma non sapevo che tentare :/).
Heretic Curse è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2013, 19:56   #8
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Non vorrei dire blasfemie ma, se il tuo codice è tutto dentro un unico file ( come mi pare di capire ) non c'è bisogno di importare niente..
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2013, 20:04   #9
Heretic Curse
Member
 
Iscritto dal: Mar 2011
Messaggi: 125
Lo avevo intuito pure io, eppure se non importo nulla mi si blocca ad un certo punto, senza restituire errori D:
Se volete, questo è esattamente ciò che produce:

Codice:
---------- Le carte sono state distribuite
La mano di Howard contiene tali carte:
Queen di Quadri
 2 di Cuori
  4 di Picche
   10 di Fiori
    3 di Fiori
     9 di Picche
      5 di Fiori
       2 di Picche
        5 di Quadri
         9 di Cuori
          6 di Cuori
           3 di Cuori
            6 di Fiori
             3 di Picche
              5 di Cuori
               8 di Cuori

La mano di Sheldon contiene tali carte:
7 di Cuori
 5 di Picche
  10 di Cuori
   6 di Picche
    Asso di Cuori
     10 di Picche
      2 di Fiori
       3 di Quadri
        Jack di Quadri
         7 di Picche
          Asso di Quadri
           Queen di Cuori
            6 di Quadri
             Jack di Fiori
              Queen di Picche
               Queen di Quadri

La mano di Leonard contiene tali carte:
10 di Quadri
 9 di Fiori
  Asso di Picche
   7 di Quadri
    8 di Quadri
     9 di Quadri
      8 di Fiori
       Jack di Cuori
        7 di Fiori
         2 di Quadri
          4 di Fiori
           4 di Cuori
            Jack di Picche
             4 di Quadri
              8 di Picche

Mano di Howard : 3 di Fiori elimina 3 di Picche
Mano di Howard : 5 di Quadri elimina 5 di Cuori
Mano di Sheldon : Asso di Cuori elimina Asso di Quadri
Mano di Sheldon : Queen di Cuori elimina Queen di Quadri
Mano di Leonard : 8 di Fiori elimina 8 di Picche
Mano di Leonard : 4 di Cuori elimina 4 di Quadri
---------- Coppie scartate, inizia la partita
Heretic Curse è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2013, 20:44   #10
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Carta è una classe, non un modulo, quindi non puoi importarla.

Il tuo programmino è diventato più complesso e una veloce occhiata non è sufficiente per capire dove potrebbe essere il problema. Se avrò un po' di tempo, vedrò quale potrebbe essere la causa.

Comunque anche se hai ancora molto da imparare, e quindi roba come unit-testing o TDD al momento ti sono aliene, nulla t'impedisce di usare un approccio di tipo "divide et impera". Controlla se le singole classi si comportano come dovrebbero, partendo da quelle "di base" (cioé quelle che non usano altre classi, e che verranno usate dalle altre classi).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2013, 20:54   #11
Heretic Curse
Member
 
Iscritto dal: Mar 2011
Messaggi: 125
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Carta è una classe, non un modulo, quindi non puoi importarla.

Il tuo programmino è diventato più complesso e una veloce occhiata non è sufficiente per capire dove potrebbe essere il problema. Se avrò un po' di tempo, vedrò quale potrebbe essere la causa.

Comunque anche se hai ancora molto da imparare, e quindi roba come unit-testing o TDD al momento ti sono aliene, nulla t'impedisce di usare un approccio di tipo "divide et impera". Controlla se le singole classi si comportano come dovrebbero, partendo da quelle "di base" (cioé quelle che non usano altre classi, e che verranno usate dalle altre classi).
Ok grazie, buona idea
Heretic Curse è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2013, 06:35   #12
Heretic Curse
Member
 
Iscritto dal: Mar 2011
Messaggi: 125
Mio dio, pare che funzioni tutto :/ in sostanza il mio programma non si avvia da Turno = 0 in poi, quindi non posso verificare alcuni metodi come GiocaUnTurno, ma controllando queste mentalmente e controllando gli altri metodi che richiamano pare tutto ok
Heretic Curse è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2013, 20:37   #13
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Qualunque metodo è verificabile, specialmente in Python (dove non ci sono membri privati). Devi cercare di sforzarti di più.

Il mio consiglio è di cercare di riprodurre con un piccolo pezzo di codice le condizioni che "sfuggono", testando così i singoli casi particolari. Vedrai che te ne esci, e sarai pure a un passo dalle basi dello unit-testing e TDD, che ti faranno cambiare completamente il modo di concepire il codice (ma è ancora prematuro).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2013, 05:30   #14
Heretic Curse
Member
 
Iscritto dal: Mar 2011
Messaggi: 125
Sisi, infatti poi mi ero messo a fare così e hanno cominciato a saltare fuori gli errori vi dirò come andrà alla fine
Heretic Curse è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2013, 17:36   #15
Heretic Curse
Member
 
Iscritto dal: Mar 2011
Messaggi: 125
Ok, ho scoperto che il metodo Mescola non funziona :/ anche se effettivamente alla fine le mani dei giocatori sembrano casuali. Eppure se faccio un codice con solo la classe Carta e solo la classe Mazzo (+ import random), facendo così:
Codice:
T = Mazzo()
T.Mescola
print T
il mazzo mi rimane in ordine. Ovviamente Mescola l'ho scritto esattamente uguale a com'è sul libro tutti i metodi di Carta funzionano, e anche init e str di Mazzo producono gli esiti corretti.
Sinceramente non credo la motivazione dell'insuccesso finale sia dovuta a questo, ma ho trovato questa falla e direi che è meglio se viene corretta
Heretic Curse è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2013, 19:05   #16
The_ouroboros
Senior Member
 
L'Avatar di The_ouroboros
 
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
Dai un occhio qui (http://docs.python.org/2/library/unittest.html ) a me, quando imparavo python, ha molto aiutato...
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go
The_ouroboros è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2013, 22:27   #17
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da Heretic Curse Guarda i messaggi
Ok, ho scoperto che il metodo Mescola non funziona :/ anche se effettivamente alla fine le mani dei giocatori sembrano casuali. Eppure se faccio un codice con solo la classe Carta e solo la classe Mazzo (+ import random), facendo così:
Codice:
T = Mazzo()
T.Mescola
print T
il mazzo mi rimane in ordine. Ovviamente Mescola l'ho scritto esattamente uguale a com'è sul libro tutti i metodi di Carta funzionano, e anche init e str di Mazzo producono gli esiti corretti.
Sinceramente non credo la motivazione dell'insuccesso finale sia dovuta a questo, ma ho trovato questa falla e direi che è meglio se viene corretta
La falla è nel tuo codice: Mescola è un metodo e quindi va richiamato con la coppia di parentesi tonde () subito dopo il nome. Tu le hai omesse, quindi hai semplicemente preso (l'indirizzo del) il metodo, e poi l'hai buttato.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2013, 22:37   #18
Heretic Curse
Member
 
Iscritto dal: Mar 2011
Messaggi: 125
Beh, quest'ultimo è stato davvero imbarazzante

Btw sto ricontrollando il codice, e ho scoperto che avevo omesso le parantesi dopo uno StampaMani! Ora il codice va un po' oltre, poi si blocca di nuovo, ma è già un gran passo avanti! della mancanza di queste parentesi me ne ero già accorto anche prima di leggere la tua risposta :P comunque grazie, perché ci stavo ancora pensando visto che non mi è venuto in mente di aver potuto commettere lo stesso errore due volte.
Ora vado a dormire, poi controllerò GiocaUnTurno, siccome ormai sono pressocché certo che l'errore stia lì.

Ho dato un'occhiata di nuovo ad unittest. Dovrò proprio impararlo, ma non credo sia il momento.
Heretic Curse è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2013, 23:15   #19
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
La domanda mi sorge spontanea: ma hai scritto un intero programma così lungo ( e non-banale ) dall'inizio alla fine senza averlo mai provato lungo il percorso?
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2013, 05:14   #20
Heretic Curse
Member
 
Iscritto dal: Mar 2011
Messaggi: 125
Non ho provato solo i metodi di GiocoOldMaid e ManoOldMaid, ora che ci penso, però mi ero rimesso a riguardare tutto dall'inizio
Heretic Curse è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Addio caminetto, il fiume di melma di Gh...
Sfreccia a Trento con una e-bike a 85 km...
I 6 smartphone più scontati su Am...
La capsula SpaceX Dragon CRS-33 ha acces...
La NASA è sempre più vicin...
Crisi delle memorie: ASUS torna al passa...
Le console next-generation potrebbero es...
Gemini cresce ancora: la quota di mercat...
Samsung sfida TSMC: la capacità produtti...
Iliad alza il prezzo della fibra ottica ...
Il prossimo low cost di POCO sarà il più...
The Elder Scrolls VI: ecco le ultime sul...
Ecco i saldi di fine anno Amazon, 34 off...
iPhone Fold: scorte limitate al lancio m...
OpenAI porterà la pubblicità in ChatGPT ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:45.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v