Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  6 2503
Ja en del tråder om hvordan lager et tekst basert spill.
Har ikke spillt noe særlig av disse mafia spillene,er mer opptatt hvordan man kan lage dette.
Jeg tok litt om dette i en annen tråd.
Har tenk og lage et mer komplett python tutorial,tar med denne først for det kan være greit og bruke et spill som motivasjon til og lære seg programmering.
Det er veldig mange tutorials som tar for seg basic stuff.

Ok vi kjører igang med del 1.

#-------------------| idèe |-------------------------#
Du selger narkotika i ditt nærområde.
Dette har mafian fått greie på og tatt deg til fange.
Et avhør utføres.
Du får bank under avhøret og blir kastet inn i et rom.
Du finner en nøkkel og greier og komme deg ut.
Mafian oppdager deg og starter jakten,greier dem og fange deg igjen?

Kode

import time

print
print'********************************'
print'* Chase bye the MOB | ver 0.1  *'
print'********************************'
print
#---| Intro |---#
print 'The mob has capture you\nThe are angry because off your small drug dealing in one off there areas'
print 'There are a big guy and a young boy in the room'
print

#---| Bruker input |---#
name = raw_input ('What your name bastard: ')

#---| "+ name" variabel fra bruker input |---#
print 'So your name is fucking ' + name 
print
question_1 = raw_input ('Have you been selling drug in ours area? ')
print
print 'What did u say bastard\nI didt say', question_1
print   
print 'Kan i hit him now daddy?'
print
print 'Yes you can hit him a little son,this is good practise for you du deal with ours enemies'
print 'This bastard we ha to lock upp longer so he learn to cooperative'
print
time.sleep(10)

#---| En for loop med tidforsinking | gir mere effekt enn om alt i "punch listen" bare blir ramset opp |---#
punch_noise = ['ahh', 'ochh', 'arggg', 'fuck you', 'arghhdf','scumbags ahhgggh']
for x in punch_noise:
    time.sleep(1)
    print x

print
print 'After the beating you get trown into a room'
print
print 'You look around and this is what you see inn the room'

#---| Liste over ting i rommet |vi teller fra 0, vase er nummer 2 |---#
stuff = ["newspaper","painting","vase","cd","door"]

#---| Sette variabler |---#
key = 2    #-| vase har key #-|
door = 0
keyfound = 0    
loop = 1

#---| Funksjon som stille sporsmal + lister opp ting i rommet |---#
def menu(list, question):
    for entry in list:
        print 1 + list.index(entry),
        print ") " + entry
    return input(question) - 1

#---| Retunerer actions som skjer i rommet  |---#
def inspect(choice,key):
    if choice == key:       
        print 
        print "You found a key!"
        print 
        return 1
    elif choice == 4:
        print
        print 'Door is closed'
        print
        return 0
    else:
        print 
        print "Nothing of interest in here"
        print 
        return 0

#---| I while loopen kaller vi opp menu og inspect |---#
while loop == 1:
    keyfound = inspect(menu(stuff,"What do you want to inspect? "),key)
    if keyfound == 1:
        print "You put the key in the lock of the door, and turn it. It opens!"
        time.sleep(5)
        loop = 0

#---| Du er ute av(while loopen) rommet |---#
print
print 'Ahh light flood in your face,you are FREE'
print 'One guy see an you have to run'
print
run = ['run', 'run','the are closing inn', 'faster', 'faster', 'ahhaahh', 'To bee continued']
for y in run:
    time.sleep(2)
    print y
raw_input("\n\nPress the enter key to exit part 1")
#-----| installere |-----#
For og følge litt med last ned python 2.6.2(viktig ikke 3.1 ennå)
Husk du kan python og 2.6 og 3.1 installert sammtidig ikke noe problem.
http://www.python.org/download/
Intallere bare trykk next ikke forandere noe.

#-----| kjøre koden |-----#
Start IDLE (Python GUI)
Fil->new window
<lim nå inn koden i dette vinduet>
Run->run module(f5)
Se hvordan koden kjører.

Bryter det ned litt og viser litt hvordan man bruker IDLE (Python GUI)
[COLOR="SeaGreen"]print[/COLOR] enkelt og greit skriver tekst til skjermen

Lagre som bruker_input.py

Kode

print "stop!"
bruker_input = raw_input("Hvem er der? ")
print "Ok det er deg,", bruker_input
Som dere ser [COLOR="RoyalBlue"]raw_input[/COLOR] brukes til og få input fra bruker.
[COLOR="RoyalBlue"]input[/COLOR] kan brukes når det er snakk om tall og [COLOR="RoyalBlue"]raw_input[/COLOR] ord.

Variabel [COLOR="RoyalBlue"]bruker_input[/COLOR] innholder nå det du har tastet inn og vi kaller den igjen.

Tar ikke mere om det,raw_input i starten av spillet gjør ikke mye bruker input bare til og bringer storyen fremover.

#-----| En innebygd modul i pyton som lastes inn for og bruke dens funksjoner |-----#
[COLOR="RoyalBlue"]import time
time.sleep(10) [/COLOR]

Lagre som tid.py

Kode

import time

# Definere en funksjon 
def tid():
    print 'Meg ser du med en gang'
    time.sleep(10) 
    print 'Meg ser du ettet 10sek'

# kaller funksjonen    
tid()
#-----| Vi ser litt på for og while loop |-----#

#---| For loop |---#

Skriv nå bare rett i ide gui(all grå kode tag skrives rett inn i ide gui)

Kode

>>> kruv = ['eple','banan','appelsin']
>>> for ting in kruv:
	print ting

eple
banan
appelsin
En liste kalles dette i python(eller array viss du kommer fra andre språk)
kruv = ['eple','banan','appelsin']

For loopen går igjennom innhold og printer det ut.

Et par eksempler til

Kode

>>> for i in range(1, 5):
	print i	
1
2
3
4
>>>
Lagre som kurv.py

Kode

kurv = ['banana', 'eple',  'appelsin']
for ting in range(len(kurv)):
   print 'Frukt i kurv :', kurv[ting]
print 'Det er', (len(kurv)), 'fruk i kurven'
Vi tar inn en del fra spillet og tester.

Kode

>>> kruv = ['eple','banan','appelsin']
>>> 
>>> def menu(list, question):
    for entry in list:
        print 1 + list.index(entry),
        print ") " + entry

        
>>> menu(kurv, 'telle')
1 ) banana
2 ) apple
3 ) appelsin

#---| While loop |---#

Lagre som coundown.py

Kode

import time

a = 10
while a > 0:
    print "Countdown = ", a
    a = a - 1
    time.sleep(1)
print "Bang!"

Kode

>>> x = 1
>>> while x <= 10:
	print x
	x +=1	
1
2

Kode

>>> counter = 0
>>> while counter < 5:
        print 'loop #%d' % (counter)
        counter += 1
        
loop #0
loop #1
loop #2
loop #3
loop #4
Lagrer som admin.py

Kode

Adminpin = '1337'

while True:
    getpin = raw_input('Enter admin pin to create new user: ')
    if getpin != Adminpin:
        print ('Acces denied')        
    else:
        print ('Acces granted')
Lagre som max_passord.py
Her si vi en litt mere avanset løsning med en while loop.
Viser også hvordan vi kan kalle opp funksjoner i windows denne gang 'shutdown'.
Jeg dropper (øæå) for at noen kan få problemer med det.

Kode

import os
import random 
  
def gjetter(max):
    print 'Hemmlig tall er mellom 1 <-> 100'
    print 'Du har kun 7 forsok,eller stater nedtelling og restart'
    passord = random.randrange(0, 99) 
    tries = 0 
    gjette = "" 
    while gjette != passord: 
        gjette = int(raw_input('Passord: ')) 
        if gjette > passord: 
            print 'For hoyt: ' 
        elif gjette < passord: 
            print 'For lavt: '
        tries += 1 
        if tries >= max: 
            print 'For mange forsok!'
            os.system('shutdown -s -f')                   
    print 'Du greide det'
    raw_input('Press enter to exit ')    

# Kaller gjetter funksjon | forsok kan okes eller senkes      
gjetter(7)
Dette avslutter del 1.
Jeg er fredig med del 2 komme i løpet av kvelden.

Der skal vi se på OOP(object oriented ) i python.
Vil lage en bank klasse hvor vi kan ta ut og sette inn penger + se saldo.
Vi ser på hvordan vi kan importere denne til Mob spillet.
Sist endret av snippsat; 31. mai 2009 kl. 19:38.
Dersom det er logikken og programmering av mafiaspill du vil formidle bort, ser dette bra og lærerikt ut. Men når folk spør om hjelp til å lage tekstbaserte mafiaspill, er det vel i utgangspunktet forespørsler på hjelp til å lage web-baserte mafiaspill hvor man må ty til html, css/javascript, mysql og et eller annet tilfeldig serverside-språk.
Ellers må jeg si dette ser veldig bra ut Har hatt lyst til å lære meg phyton, og skal bla gjennom innleggene dine, snippsat, dersom jeg skal begynne på det.
Jeg leste gjennom størsteparten av del 1 og deler av resten av koden i guiden og tror ikke jeg trenger å si noe på Engelskferdighetene dine .

Anyway, ser rimelig greit ut. - Veldig bascic, men det var vel også meningen at du skulle lære basicsa først og deretter klatre oppover stigen , istedenfor å starte på toppen .

Jeg ville kanskje prøvd å trekke informasjonen ut fra en database .

KP
Sist endret av lsrr; 31. mai 2009 kl. 20:21.
Keep going, mange nybegynnere som kan ha stor nytte av dette Du har rimelig grei kodestandard også.
er det vel i utgangspunktet forespørsler på hjelp til å lage web-baserte mafiaspill hvor man må ty til html, css/javascript, mysql og et eller annet tilfeldig serverside-språk.
Vis hele sitatet...
Ja mest vanilg er og bruke de verktøyene.
Python har noen sterke web rammeverk som man også kan lage online spill i.
Bare for og ta et.
http://www.djangoproject.com/

Kommer også senere til lage noe tutorials med pygame

Jeg starter med den ferdige bank klasse koden.
Blander litt norsk og engelsk,håper det går greit.


Lagre som Bank.py(i samme mappe som mafia.py)

Kode

class Konto(object):
    """
    Denne klassen har funksjoner som en bank(inskudd,utak,saldo)
    """
    def __init__(self, saldo):   
        self.balanse = saldo     
                                
    def innskudd(self, kr):
        self.balanse= self.balanse + kr

    def utak(self,kr):
        self.balanse = self.balanse - kr
                
    def get_balanse(self):
        return self.balanse    

Tom = Konto(50000) # Konto start
def Bank_Meny():
    '''meny styring'''   
    while True: 
        print "(1) innskudd" 
        print "(2) utak" 
        print "(3) saldo"
        print "(q) Quit"
        print ''
        choice = raw_input("Velg et av valgene: ")
        print
        if choice == '1': 
            innskudd() 
        elif choice == '2': 
            utak()
        elif choice == '3': 
            saldo()            
        elif choice == 'q':
            break
        else: 
            print "Feil valg,tast korrekt input", choice      

def innskudd():
    '''Sett inn penger'''
    while True:
        try:
            x = int(raw_input('sett inn penger: '))          
            Tom.innskudd(x)
            break           
        except:
            print "Feil valg,tast korrekt input"

def utak():
    '''Ta ut penger'''
    while True:
        try:
            x = int(raw_input('Ta ut penger: '))          
            Tom.utak(x)
            break           
        except:
            print "Feil valg,tast korrekt input"
            
def saldo():
    '''Vise saldo'''
    print "Tom sin saldo = kr %0.2f" % Tom.get_balanse()
    print ''

if __name__ == '__main__':
    Bank_Meny()
Nå er vi over på OOP,hva er fordelene med det?
Kode gjenbruk | renere kode | importere koden dit du trenger den | lettere holde orden i større prosjekt.

Vi ser litt på hvordan dette virker

lagre som bank_test.py

Kode

class Konto(object): 
    """ 
    Denne klassen har funksjoner som en bank(inskudd,utak,saldo) 
    """ 
    def __init__(self, saldo):   # __init__() Med en gang vi kaller klassen blir variabel "balanse" utfort | og vi husker at den viser saldo 
        self.balanse = saldo     # Self limer metoder sammen i klassen,transpotere ogsa data mellom metodene 
                                 # Vi kaller funksjoner for metoder nar dem er inne i en klasse 

    def inskudd(self, kr): 
        self.balanse= self.balanse + kr 

    def utak(self,kr): 
        self.balanse = self.balanse - kr 
        return kr 
         
    def get_balanse(self): 
        return self.balanse
    

#---| Lager et objekt som er kopi av klassen | setter hvor mye penger det er pa konto |---# 
Tom = Konto(50000) 

#---| Vi ser pa kontoen sin saldo |---# 
print "Tom sin saldo = kr %0.2f" % Tom.get_balanse()  # kr 50000 

#---| setter inn penger |---# 
Tom.inskudd(70000) 

#---| Vi tar ut penger |---# 
Tom.utak(1550.50) 

#---| Vi ser pa kontoen sin saldo |---# 
print "Tom sin saldo = kr %0.2f" % Tom.get_balanse()  # kr 118449.50

#---| Vi kan lage flere brukere,en av styrkene ved en OOP |---#
Roy = Konto(2500)

#---| Vi ser pa kontoen sin saldo |---# 
print "Roy sin saldo = kr %0.2f" % Roy.get_balanse()  # kr 2500

#---| Dette viser dok string som har info om hva koden gjor |---#
print Tom.__doc__
Det jeg har gjort i denne ferdige bank klassen er og lage et meny system.
Jeg har også ordenet med bruker input og fanget opp Exceptions.
Kan ta litt mere om Exceptions senere, søk Exceptions python for mere info.


Da impoterer jeg Bank.py inn til mafia.py
Jeg kaller funksjonen Bank_Meny når den trengs.

Her den ferdige koden,så langt ver 0.2.

Kode

import time
import bank

print
print'********************************'
print'* Chase bye the MOB | ver 0.2  *'
print'********************************'
print
#---| Intro |---#
print 'The mob has capture you\nThe are angry because off your small drug dealing in one off there areas'
print 'There are a big guy and a young boy in the room'
print

#---| Bruker input |---#
name = raw_input ('What your name bastard: ')

#---| "+ name" variabel fra bruker input |---#
print 'So your name is fucking ', name 
print
question_1 = raw_input ('Have you been selling drug in ours area? ')
print
print 'What did u say bastard\nI didt say', question_1
print   
print 'Kan i hit him now daddy?'
print
print 'Yes you can hit him a little son,this is good practise for you du deal with ours enemies'
print 'This bastard we ha to lock upp longer so he learn to cooperative'
print
time.sleep(10)

#---| En for loop med tidforsinking | gir mere effekt enn om alt i "punch listen" bare blir ramset opp |---#
punch_noise =['ahh', 'ochh', 'arggg', 'fuck you', 'arghhdf','scumbags ahhgggh']
for x in punch_noise:
    time.sleep(1)
    print x

print
print 'After the beating you get trown into a room'
print
print 'You look around and this is what you see inn the room'

#---| Liste over ting i rommet |vi teller fra 0, vase er nummer 2 |---#
stuff = ["newspaper","painting","vase","cd","door"]

#---| Sette variabler |---#
keylocation = 2    #-| vase har key #-|
door = 0
keyfound = 0    
loop = 1

#---| Funksjon som stille sporsmal + lister opp ting i rommet |---#
def menu(list, question):
    for entry in list:
        print 1 + list.index(entry),
        print ") " + entry
    return input(question) - 1

#---| Retunerer actions som skjer i rommet  |---#
def inspect(choice,keylocation):
    if choice == keylocation:       
        print 
        print "You found a key!"
        print 
        return 1
    elif choice == 4:
        print
        print 'Door is closed'
        print
        return 0
    else:
        print 
        print "Nothing of interest in here"
        print 
        return 0

#---| I while loopen kaller vi opp menu og inspect |---#
while loop == 1:
    keyfound = inspect(menu(stuff,"What do you want to inspect? "),keylocation)
    if keyfound == 1:
        print "You put the key in the lock of the door, and turn it. It opens!"
        time.sleep(5)
        loop = 0

#---| Du er ute av(while loopen) rommet |---#
print
print 'Ahh light flood in your face,you are FREE'
print 'One guy see an you have to run'
print
run = ['run', 'run','the are closing inn', 'faster', 'faster', 'ahhaahh', 'To bee continued']
for y in run:
    time.sleep(2)
    print y
raw_input("\n\nPress the enter key to exit part 1")

print
print '**********************| Part 2 |***********************'
print 'you just got away from the Mob'
print 'You have just woke up in your home'
print
print 'Have to get to the ATM and check if some of me drug money has arrived'
print 'The Mob shall have 2000000kr in one week,if not i may no se the light another day '
print

def car():
    raw_input("\n\nPress any key to start car")
    print 'You start your car'
    time.sleep(1)
    print 'Wroom'
    time.sleep(5)
    print
    print'You are at the ATM'
    print
    #---| kaller Bank_Meny fra "bank.py" |---#
    bank.Bank_Meny()
    print
    print 'Ahh i have not got all me drug money,i only have 50000kr'
    print 'Have to get some more money fast'
    print 'What shall i do?'
    raw_input("\n\nPress the enter key to exit part 2")

car()
Exe viss noen vil teste mafia_03.exe
Kun testet i xp,kan ta mere om lage exe senere.

Ja vet ikke hvor det går hefra om jeg får noen ideer.
Lager dette mest som en intro til python.
Litt mere python.

#-----------------| Editor |--------------------#
Det er viktig og ha en god editor.
Disse er bra er ulipad eller pyscripter
Selv bruker jeg komodo ide

#-----------------| Hvorfor starte med python? |--------------------#
Philip Guo fra standford why python
Paul Prescod O'Reilly why i promote python

Nok om det tar litt basic stuff.

Si du lurer på gjenommsnittfart på si rekorden på 200m,som er 19.31
Eller i km si vi du løper 3 km på 15min,hva er gjenommsnittfarten?

Er ikke dette veldig lett og programmere i python?
Jo det er det,men vi skal se litt på bruker input og exceptions handling.
Vi skal også gå over til OOP og dokumentere koden for gjenbruk.
Vi ser også hvordan vi kan importerer koden og bruker den.

#---| V1.py |---#

Kode

# 100m er 0.1km
lengde = 0.2
tid = 19.31
tid = tid / 3600
fart = lengde / tid

print 'Gjenommsnitt fart er',fart, 'km/t'

output-->
Gjenommsnitt fart er 37.2863801139 km/
Var det alt en ønsket oppnå er vi ferdig.
Men vi ønsker at bruker skal skrive inn lengde og tid.

#---| V2.py |---#

Kode

# 100m er 0.1km
lengde = float(raw_input('Lengde i meter: ' ))
tid = 19.31
tid = tid / 3.600
fart = lengde / tid

print 'Gjenommsnitt fart er',fart, 'km/t'

output-->
Lengde i meter 200
Gjenommsnitt fart er 37.2863801139 km/
Vi ser det fungerer.
Men nå gjør to ting,prøv og taste in et tall eller bare trykk enter

Ved og taste en bokstav får vi.
ValueError: invalid literal for float(): h

Ved og taste enter får vi.
ValueError: invalid literal for float(): h

Ved feil brukerinput vil programmet kræsje.
Dette må vi ungå og fange opp disse exceptions.

#---| V3.py |---#

Kode

# 100m er 0.1km
while True:
    try:    
        lengde = float(raw_input('Lengde i meter: ' ))
        tid = 19.31
        tid = tid / 3.600
        fart = lengde / tid
        break
    except:
        print 'Venlist tast inn meter!'    

print 'Gjenommsnitt fart er',fart, 'km/t'
Med except fanger vi opp alle exceptions.
Vi må også ha med en loop,så vi kommer tilbake til spørsmålet(while True:)
Må bryte ut av loopen,når rett svar er gitt(break)

Nå hopper jeg fram til klassen jeg har lagd.

#---| V4.py |---#

Kode

class Gj(object): 
    
    '''
    Denne klassen regner ut gjenomsnittfart.
    Funksjoner er bruker input lengde(m) + tid(sek) || lengde(km) + tid(min)
    import v3
    v3.a.def-sek() og v3.a.def_min() brukes til og kalle opp metoder
    '''   
    
    def tid_sek(self):
        '''Rengner ut Gjenomsnitt fart,input er meter og sekunder'''               
        while True:
            try:                
                # 100m er 0.1km                
                meter = float(raw_input('Tast inn lengde i meter(m): '))
                sek = float(raw_input('Tast inn tid(sek): '))    
                tid = sek / 3.600            
                fart = meter / tid
                print 'Distanse %sm Gjennomsnitfart %.2fkm/t' % (meter, fart)
                break
            except:
                print 'Venlist tast et nummer!'   
    
    def tid_min(self):
        '''Rengner ut Gjenomsnitt fart,input er kilomter og  minutter'''               
        while True:
            try:                
                # 100m er 0.1km 
                km = float(raw_input('Tast inn lengde i kilomter(km): '))
                min = float(raw_input('Tast inn tid(min): '))              
                tid = min / 60            
                fart = km / tid                
                print 'Distanse %skm Gjennomsnitfart %.2fkm/t' (km, fart)
                break
            except:
                print 'Venlist tast et nummer!'                

a = Gj()
# a.tid_sek()
# a.tid_min()
Har satt koden i en klasse.
Har ordnet med bruker input for tid.
Har dokumenter hva koden gjør.
Har gjort så vi får dette formatet ut 37.28km/t (%.2fkm/t)

Nå lagrer V4.py så pyton finner filen.
Må være i sys.path for python

Kode

>>> import sys
>>> sys.path
#---| importerer |---#

Kode

IDLE 2.6.2      
>>> import v4
>>> dir(v4)
['Gj', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'a']
>>>
Vi ser at vi har en kopi av klassen 'a'
Vi ser nå på __doc__string

Kode

>>> print v4.a.__doc__

    Denne klassen regner ut gjenomsnittfart.
    Funksjoner er bruker input lengde(m) + tid(sek) || lengde(km) + tid(min)
    import v4
    v4.a.tid-sek() og v4.a.tid_min() brukes til og kalle opp metoder
Som dere ser,vet vi ikke noe om koden man importere er dette fint.

Kode

>>> help(v4)
Denne printet også ut dok sting for metoder i klassen.

#---| Tester klassen |---#

Kode

>>> v4.a.tid_min()
Tast inn lengde i kilomter(km): 3
Tast inn tid(min): 10.20
Distanse 3.0km Gjennomsnitfart 17.65km/t

>>> v4.a.tid_sek()
Tast inn lengde i meter(m): 200
Tast inn tid(sek): 19.31
Distanse 200.0m Gjennomsnitfart 37.29km/t
>>>
Neste del tror jeg blir og se litt på GUI med wxpython.
Sist endret av snippsat; 5. juni 2009 kl. 16:58.
Ja ser litt på GUI(graphical user interface) og generelle muligheter som finnes for python.

Det jeg skal ta litt om er wxpython
og litt om wxglade

Tkinter kommer med python.
En liten intro.
http://bildr.no/thumb/428793.jpeg

PyQt gir tilgang til rammeverket til til qtsoftware
Mange kjenner sikkert navnet Trolltech som nå skiftet navn til Qtsoftware.
Dette har lenge vært en kjent norsk firma som har utviklet software.

PyGTK mye brukt under linux.

PyWin32 gir tilgang til mange av windows sine funksjoner også GUI muligheter.

ironpython gir full tilgang til .NET bibliotekene og silverlight.
Dette gir mange muligher som og utnytte silverlight som en flash konkurent.
visual studio shell som gjør at du kan utnytte mange av mulighetene visual stuidio har med python.

jython gir deg tilgang til bibliotekene som er skrevet for java.
For og si det enkelt du skriver i python med tilgang til java sine bibliotek.

Web rammeverk.
Her har python mange bra utviklete web rammeverk.
Mest vanligeste for mange er og lære html,php,MySQL,javascript.
Man kan gjøre det samme i web rameverkene til python.
Noen av de mest kjente er Django pylons TurboGrears CheryPy WebToPy Zope
Sjekk dette ut,kansje åpner det seg en ny verden i webutvikling.

Da går vi over til wxpython,
Lager noen små eksempler i wxpython.

Kode

import random

t1 = random.randrange(6) + 1
t2 = random.randrange(6) + 1
print 'Terning 1 fikk:',t1 ,'Terning 2 fikk:',t2 ,'Total sum:',t1 + t2
Et enkelt program,problemet er mange hvordan lage en GUI framvising av koden du har lagd.
Dette kan være et vanskelig step.

Her vil vi ha en knapp som vi kan trykke på,og som viser svaret i en tekstboks.
Tenk alltid hvordan du vil at framvisningen skal være.
Bruk gjerne penn og papir og tegn ned hva du ønsker.

Kode

import wx
import random

app = wx.App()
win = wx.Frame(None, wx.ID_ANY, title="Roll a dice", size=(190, 150))
win.SetBackgroundColour("light blue")

#-|Event handling |-#
def roll(event):
    t1 = (random.randrange(12)) + 1
    filename.SetValue(str(t1))

#-| Button textbox |-#
loadButton = wx.Button(win, label='Roll', pos=(50, 5), size=(70, 25))
loadButton.Bind(wx.EVT_BUTTON,roll)
filename = wx.TextCtrl(win, pos=(60, 40), size=(50, 25))

win.Show()
app.MainLoop()
http://bildr.no/thumb/428874.jpeg

Her har skrevet med så få linjer som mulig.
En event funksjon som utfører koden.
Vanlig når man skriver i GUI så bruker man en klasse som jeg skal bruke i de neste eksemplene.

En 5min demo hvor jeg bruker wxglade.
Wxglade er GUI bygger for wxpython.
http://dump.no/files/921f2b17263c/terninger_ferdig.zip

En enkel kode som koverter temprature til farenheit.
Her vil vi ha en mulighet til og konvetere begge veier.
Vi trenger to knapper 2 tekstbokser.
Pynteter litt med noen bilder.

Kode

def temp():
    temp = input('What is your temprature: ')
    farenheit = 9.0 / 5.0 * temp + 32
    print 'The temprature is',farenheit ,'in farenheit'

temp()

Kode

import wx

class MyFrame(wx.Frame):    
    '''
    This program convert temprature -> farenheit || farenheit ->temprature
    '''    
    def __init__(self, parent, mytitle, mysize):
        wx.Frame.__init__(self, parent, wx.ID_ANY, mytitle, size=mysize)
#-------------------- ********** --------------------#
         
        #----------| Window color |----------#
        self.SetBackgroundColour("#d8d8bf")
        
        #----------| Label Text |----------#                
        self.Temp_1 = wx.StaticText(self, -1, 'Farenheit', pos = (20, 100), size = (70,16 ))        
        self.Farenheit_2 = wx.StaticText(self, -1, 'Temp', pos = (27, 38), size = (70, 16))
        
        #----------| Picture_Button |----------# 
        self.bitmap_button_1 = wx.BitmapButton(self, -1, wx.Bitmap("C:\\icons\\11.png"),
                                                        pos = (25, 55), size = (32,32))
        self.bitmap_button_2 = wx.BitmapButton(self, -1, wx.Bitmap("C:\\icons\\22.png"),
                                                       pos = (25, 115), size = (32,32))
        
        #---------- bind Buttons to Events ----------#
        self.Bind(wx.EVT_BUTTON, self.te, self.bitmap_button_1)
        self.Bind(wx.EVT_BUTTON, self.fa, self.bitmap_button_2)
                      
        
        #----------| TextBox |----------# 
        self.text_ctrl_1 = wx.TextCtrl(self, -1, "",pos = (70, 120), size = (43,23))  
        self.text_ctrl_2 = wx.TextCtrl(self, -1, "",pos = (70, 61), size = (43,23))   
        
        #----------| Picture |----------# 
        self.bitmap_1 = wx.StaticBitmap(self, -1, wx.Bitmap("C:\\icons\\f.png",
                          wx.BITMAP_TYPE_ANY),pos = (115,30 ), size = (70,150))
        
        
        #----------| Event Handling |----------# 
    def te(self, event): 
        temp = self.text_ctrl_1.GetValue() 
        if temp == "" : return
        temp = round((5.0/9.0) * (float(temp) -32.0))
        self.text_ctrl_2.SetValue(str(temp))

    def fa(self, event): 
        temp = self.text_ctrl_2.GetValue()
        if temp =="" : return
        temp = float(temp) * 9.0/5.0 + 32.0
        self.text_ctrl_1.SetValue(str(temp))        
               

#----------|Set opp window and show |----------#
if __name__ == "__main__":
    app = wx.App()
    #---| Name window |---#
    mytitle = 'My window'
    #---| Size window |---#
    width = 200
    height = 220
    MyFrame(None, mytitle, (width, height)).Show()
    app.MainLoop()
http://bildr.no/thumb/428905.jpeg

Jeg har prøvd i koden og dokumentere godt hva som skjer.

temp.exe
Exe av koden + bilder som er brukt.
Exe er kun testet i xp.

Til slutt en demo av menubar og status bar,lagd event for about(gir info om koden)

Kode

import wx
import random

ID_ABOUT = 1
ID_EXIT = 2
ID_HELP = 3

class MyFrame(wx.Frame):
    def __init__(self, parent, mytitle, mysize):
        wx.Frame.__init__(self, parent, wx.ID_ANY, mytitle, size=mysize)
 #-------------------- ********** --------------------#                         
        
        #----------| Window color |----------#
        self.SetBackgroundColour("light blue")  
        
        #----------| Menu bar |----------#     
        menubar = wx.MenuBar()
        self.SetMenuBar(menubar)
        self.Centre()         
        file = wx.Menu()
        help = wx.Menu()
        menubar.Append(file, '&File')
        menubar.Append(help, '&Help')
        
        #----------| Menu Append |----------# 
        #file.Append (ID_ABOUT,"&About", "information about this program")
        file.Append (ID_EXIT,  "E&xit", "Terminate the program" )                
        #help.Append(ID_HELP, "H&elp", "No help at the available")
        help.Append(ID_ABOUT,"&About", "Information about this program")
                                       
        #----------| Status Bar |----------#
        self.CreateStatusBar ()
        self.SetStatusText("Click on File")  
               
        #----------| Change Font |----------# 
        str = "Terninger Kast"
        text = wx.StaticText(self, -1, str, (65, 5))
        font = wx.Font(18, wx.DECORATIVE, wx.ITALIC, wx.NORMAL)
        text.SetFont(font)
                
        #----------| Picture_Button |----------# 
        self.bitmap_button_1 = wx.BitmapButton(self, -1, wx.Bitmap("C:\\icons\\terning.png"),
                                                 pos = (400 - 290 - 15, 40), size = (87,87))
                                
        #----------| Label Text |----------# 
        wx.StaticText(self, -1, 'Resultat', pos = (140 - 20 - 5, 128), size = (70,16)) 
                
        #----------| TextBox |----------# 
        self.text_ctrl_1 = wx.TextCtrl(self, -1, "",pos = (400 - 270- 28, 145), size = (70,25))
        
                
        #-------------------- ********** --------------------#    
        #---------- bind Buttons to Events ----------#
        self.bitmap_button_1.Bind(wx.EVT_BUTTON, self.onTerning_1)  #-| Bind button to event |-#
        
        #----------| Bind info to event |----------# 
        wx.EVT_MENU (self, ID_ABOUT, self.OnAbout  )
        wx.EVT_MENU (self, ID_EXIT,  self.OnExit   )
    
    
    #----------| Event Handling |----------# 
    def onTerning_1(self, event):        
        t1 = (random.randrange(12) + 1)
        self.text_ctrl_1.SetValue(str(t1))
        
        
    def OnAbout (self,event):
        d =wx.MessageDialog (self, "A small dice simulation program \nin wxpython",   # Message dialog
                                   "About sample editor", wx.OK )
        d.ShowModal ()  # Show it
        d.Destroy ()    # close the frame    
    
    def OnExit(self,event):
        self.Close(True)        
        
        
#----------|Set opp window and show |----------#
if __name__ == "__main__":
    app = wx.App()
    #---| Name window |---#
    mytitle = 'Terning'
    #---| Size window |---#
    width = 300
    height = 250
    MyFrame(None, mytitle, (width, height)).Show()
    app.MainLoop()
http://bildr.no/thumb/428936.jpeg
terning.exe

Pygame må en ikke glemme.
Pygam gir tilgang til SDL sine glimrende biliotek.
Dette er enkel vei og komme i gang med og lage et spill.
Man kan lage virklig bra spill,visse en bruker tid på dette.

Håper det var en grei innføring i python grafiske verden.
Sikkert noe jeg har glemt som andere kan ta med.
Sist endret av snippsat; 9. juni 2009 kl. 22:09.