SecurityRecord Posted July 5, 2013 Report Posted July 5, 2013 (edited) Salut?ri, ast?zi va voi arat? un exemplu de coding simplu în Python prin creearea unui joc de tip Rock, Paper, Scissors. Un joc de tip Rock, Paper, Scissors este jocul perfect pentru a experimenta limbajul de programare numit Python. Input uman, compara?ii, selec?ii random ?i o mul?ime de loopuri sunt folosite pentru a cre? o versiune func?ional? a jocului. De asemenea este destul de u?or de adaptat ?i dezvoltat în continuare, ad?ugând reguli ?i rezultate, sau chiar cre? un AI rudimentar. Pentru acest tutorial, de asemenea va recomand s? folosi?i IDLE. IDLE este un IDE pentru Python pur ?i simplu extraordinar, care poate fi instalat cu u?or în majroitatea distribu?iilor de Linux ?i este deja g?sit pe Raspbian pentru pl?cile Raspberry Pi. Are func?ii de highlight pentru orice probleme ap?rute în cadrul codului ?i va las? s? rula?i u?or orice script pentru a va asigura c? func?ioneaz? în termeni normali. OutputVom începe cu un exemplu de output al acestui script, pe care îl voi separ? în mai multe p?r?i pentru a încerca s? va explic ce înseamn? fiecare buc??ica a lui. victor@ubuntu:~Desktop/PythonTutorial$ ./rocketpaperscissors.pyLet's play a game of Rock, Paper, Scissors.Aici putem vedea c? avem permisiunea de a rul? acest script într-un terminal, deci chiar ?i în afar? unui IDE. Rock = 1Paper = 2Scissors = 3Make a move: 11...2...3!Computer threw Paper!The computer laughs as you realise you have been defeated.Would you like to play again? y/n: yInputul uman în formele integer este folosit pentru compararea mi?c?rilor ?i, desigur, func?ionarea jocului. Rock = 1Paper = 2Scissors = 3Make a move: 21...2...3!Computer threw Paper!Tie game.Would you like to play again? y/n: nEste folosit un loop pentru a relua codul ?i a începe un nou joc. Thank you very much for playing our game. See you next time!HIGH SCORESPlayer: 0Computer: 1victor@ubuntu:~Desktop/PythonTutorial$ Avem de asemenea ?i o variabil? pentru a ?ine minte scorurile din joc! Output finalvictor@ubuntu:~Desktop/PythonTutorial$ ./rocketpaperscissors.pyLet's play a game of Rock, Paper, Scissors.Rock = 1Paper = 2Scissors = 3Make a move: 11...2...3!Computer threw Paper!The computer laughs as you realise you have been defeated.Would you like to play again? y/n: yRock = 1Paper = 2Scissors = 3Make a move: 21...2...3!Computer threw Paper!Tie game.Would you like to play again? y/n: nThank you very much for playing our game. See you next time!HIGH SCORESPlayer: 0Computer: 1victor@ubuntu:~Desktop/PythonTutorial$ Codul#!/usr/bin/env python2# Presenting: Rock, Paper, Scissors: The Video Gameimport randomimport time# Aceasta sectiune importa functiile extra din Python de care# avem nevoie - totusi sunt doar niste parti standard din# librariile Python, nu fac parte din enviromentul defaultrock = 1paper = 2scissors = 3names = { rock: "Rock", paper: "Paper", scissors: "Scissors" }rules = { rock: scissors, paper: rock, scissors: paper }player_score = 0computer_score = 0# Acestea sunt regulile initiale ale jocului, noi definim # trei variabile pe care le legam intr-o "relatie" si # o alta prin care tinem scoruldef start(): print "Let's play a game of Rock, Paper, Scissors." while game(): pass scores()# Incepem jocul prin a defini cum incepe fiecare runda. La# sfarsitul fiecarei runda, sesiunea se va intoarce aici, # unde putem alege daca sa incepem un alt joc sau nudef game(): player = move() computer = random.randint(1, 3) result(player, computer) return play_again()# Aici este majoritatea jocului, cerand jucatorului sa# introduca un input, asteptand si inputul computerului si# trimitand aceste date mai departe pentru a primi# rezultatele, apoi intreband daca mai vrei sa joci sau nu.def move(): while True: print player = raw_input("Rock = 1\nPaper = 2\nScissors = 3\nMake a move: ") try: player = int(player) if player in (1,2,3): return player except ValueError: pass print "Oops! I didn't understand that. Please enter 1, 2 or 3."# Aici se termina cu partea inputului de la jucator, in# schimb aici oferim informatiile jucatorului despre joc si# asteptam sa vedem ce vor sa faca mai departe, de asemenea# ii atentionam daca au introdus un numar invalid.def result(player, computer): print "1..." time.sleep(1) print "2..." time.sleep(1) print "3!" time.sleep(0.5) print "Computer threw (0)!".format(names[computer]) global player_score, computer_score if player == computer: print "Tie game." else: if rules[player] == computer: print "Your victory has been assured." player_score += 1 else: print "The computer laughs as you realise you have been defeated." computer_score += 1# Aici se intampla cateva lucruri atunci cand afisam# rezultatele. Prima data, adaugam un delay pentru a # exista putina tensiune, apoi comparam ce a introdus# playerul cu inputul computerului si printr-un # statement alegem ce va fi afisat si cum vor fi updatate# scorurile.def play_again(): answer = raw_input("Would you like to play again? y/n: ") if answer in ("y", "Y", "yes", "Yes", "Of course!"): return answer else: print "Thank you very much for playing our game. See you next time!"# In final, asteptam un input de tip text din partea# jucatorului in caz ca doreste sa joace din nou sau nu, # in caz contrar ii aratm un mesaj de la revedere si# rezultatele jocului.get scores(): global player_score, computer_score print "HIGH SCORES" print "Player: ", player_score print "Computer: ", computer_scoreif __name__ == '__main__': start()ConcluziiIn final, va spun ca imi cer mii de scuze daca exista greseli in cod si v-as ruga sa mi le raportati daca le gasiti, codul l-am facut acum pe graba, dupa o zi plina si nu sunt sigur pe el. De asemenea, imi cer iar scuze pentru ca nu am mai comentat aici fiecare sectiune in parte, insa chiar ma simt foarte obosit, sper ca sunt de ajuns comentariile facute in cod. Nu am avut timp sa rulez codul, deci doar am facut un output dupa cum ma astept eu sa functioneze. Astept sugestiile voastre si parerile.ResursePython 2: Download PythonIDLE: 24.6. IDLE — Python v2.7.5 documentationSourceForge code: https://sourceforge.net/projects/srecordresource/files/?source=navbarToate cele bune! Edited July 6, 2013 by SecurityRecord Quote
Brenin Posted July 5, 2013 Report Posted July 5, 2013 (edited) ... Edited January 4, 2014 by Brenin Quote