Had – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Had – Python – Fórum – Programujte.comHad – Python – Fórum – Programujte.com

 

Polarski0
Newbie
29. 2. 2008   #1
-
0
-

Chtěl bych poprosit o nějakou konstruktivní kritiku k mé "hře" ...

# -*- coding: cp1250 -*-

import pygame, sys
from pygame.locals import *
import math
import random
import time

pygame.init()

obrazovka = pygame.display.set_mode((501, 501))
pygame.display.set_caption("Polarski´s green Snake")
pygame.draw.polygon(obrazovka, pygame.color.Color("white"), [[0,0], [501,0], [501,501], [0,501]])

class Clanky:
def __init__(self, X, Y, xove, yove, pohyby, barva):
self.X=X
self.Y=Y
self.xove = xove
self.yove = yove
self.pohyby = pohyby
self.barva = barva

def ctverec(x1, x2, y1, y2, barva):
pygame.draw.polygon(obrazovka, barva, [[x1,y1], [x2,y1], [x2,y2], [x1,y2]])

def text(co, velikost, xove, yove, barva, rotace):
Fnt = pygame.font.SysFont("Times New Roman", velikost, bold=0, italic=0)
osd = Fnt.render (co, 0, barva)
osd=pygame.transform.rotate(osd, rotace)
obrazovka.blit(osd, (xove, yove))

poprve = 0
def start():
global poprve
global body
global clanky
global korist
global cas
barvy=["Polarski´s green Snake"]
stisknuto=0
pygame.draw.polygon(obrazovka, pygame.color.Color("white"), [[0,0], [501,0], [501,501], [0,501]])
text(u"Polarski´s", 55, 35, 15, [0,110,0], 0)
text(u"green", 55, 265, 48, [0,180,0], -90)
text(u"Snake", 55, 285, 170, [165,255,165], 0)
text(u"2008", 20, 390, 90, [0,0,0], -90)
text(u"Start", 20, 80, 115, [0,0,0], 0)
text(u"Konec", 20, 150, 185, [0,0,0], 0)
text(u"Den za dnem plouží se tak mdlý, tak mdlý, ...", 20, 45, 265, [0,0,0], 0)
text(u"A duše znavena se smutkem všeho splývá.", 20, 105, 290, [0,0,0], 0)
text(u"Získali jste :", 35, 100, 350, [0,0,0], 0)
if poprve==0:
text(u"0 bodů", 35, 220, 400, [0,0,0], 0)
else:
text(str(body)+u" bodů", 35, 220, 400, [0,0,0], 0)
pygame.display.update()
while 1:
for udalost in pygame.event.get():
"Nevim"
poz=pygame.mouse.get_pos()
print poz
if pygame.mouse.get_pressed()[0]==1:
if poz[0]> 75 and poz[0]< 120 and poz[1]> 120 and poz[1]< 140:
break
elif poz[0]> 145 and poz[0]< 200 and poz[1]> 190 and poz[1]< 250:
sys.exit()

body=5
clanky = []
for n in range(5):
c=Clanky(10-n, 10, 1, 0, [], "nic")
##c.pohyby.append([15-n, 0, 1])
clanky.append(c)

for c in clanky:
if clanky.index(c)>len(clanky)/2:
cervena=((255/(len(clanky)/2))*clanky.index(c))/2
c.barva=[int(cervena), 255, int(cervena)]
else:
zelena=((255/(len(clanky)/2))*clanky.index(c))
c.barva=[0, int(zelena), 0]

korist=[12, 12]
cas=0

for r in range(25):
pygame.draw.aaline(obrazovka, pygame.color.Color("grey"), [r*20,0], [r*20,501])
pygame.draw.aaline(obrazovka, pygame.color.Color("grey"), [0,r*20], [501,r*20])

start()
delitel=3
stisknuto = 0
while 1:
dobaTrvani=time.time()
pygame.draw.polygon(obrazovka, pygame.color.Color("white"), [[0,0], [501,0], [501,501], [0,501]])
for r in range(25):
pygame.draw.aaline(obrazovka, pygame.color.Color("grey"), [r*20,0], [r*20,501])
pygame.draw.aaline(obrazovka, pygame.color.Color("grey"), [0,r*20], [501,r*20])

if cas%delitel==0:
for c in clanky:
for n in c.pohyby:
if n[0]==0:
c.xove=n[1]
c.yove=n[2]
n[0]=n[0]-1
for n in c.pohyby:
if n[0]<0:
c.pohyby.remove(n)
c.X=c.X+c.xove
c.Y=c.Y+c.yove


if cas%delitel==0:
if clanky[0].X==korist[0] and clanky[0].Y==korist[1]:
body=body+1
d=Clanky(clanky[-1].X-clanky[-1].xove, clanky[-1].Y-clanky[-1].yove, clanky[-1].xove, clanky[-1].yove, [], "nic")
for [x,y,z] in clanky[-1].pohyby:
d.pohyby.append([x+1,y,z])
clanky.append(d)
while 1:
for udalost in pygame.event.get():
"Nevim"
x=random.randint(0,24)
y=random.randint(0,24)
jo=0
for c in clanky:
if x==c.X and y==c.Y:
jo=1
break
if jo==0:
korist=[x,y]
break
for c in clanky:
if clanky.index(c)>len(clanky)/2:
cervena=((255/(len(clanky)/2))*clanky.index(c))/2
c.barva=[int(cervena), 255, int(cervena)]
else:
zelena=((255/(len(clanky)/2))*clanky.index(c))
c.barva=[0, int(zelena), 0]

ctverec((20*korist[0])+1, (20*korist[0])+19, (20*korist[1])+1, (20*korist[1])+19, [0, 0, 0])
for c in clanky:
ctverec((20*c.X)+1, (20*c.X)+19, (20*c.Y)+1, (20*c.Y)+19, c.barva)

ctverec((20*clanky[0].X)+1, (20*clanky[0].X)+19, (20*clanky[0].Y)+1, (20*clanky[0].Y)+19, [255, 0, 0])
ctverec((20*clanky[-1].X)+8, (20*clanky[-1].X)+13, (20*clanky[-1].Y)+8, (20*clanky[-1].Y)+13, [255, 0, 0])
text(str(body), 40, 10, 10, [0,0,0], 0)

for udalost in pygame.event.get():
"Nevim"

##-------------ZADAVANI-SMERU------------------------------------------------------------------##
if pygame.key.get_pressed()[K_RIGHT]==1 and clanky[0].xove==0 and [0, 1, 0] not in clanky[0].pohyby:
poradi=0
for c in clanky:
c.pohyby.append([poradi, 1, 0])
poradi=poradi+1

elif pygame.key.get_pressed()[K_LEFT]==1 and clanky[0].xove==0 and [0, -1, 0] not in clanky[0].pohyby:
poradi=0
for c in clanky:
c.pohyby.append([poradi, -1, 0])
poradi=poradi+1

elif pygame.key.get_pressed()[K_DOWN]==1 and clanky[0].yove==0 and [0, 0, 1] not in clanky[0].pohyby:
poradi=0
for c in clanky:
c.pohyby.append([poradi, 0, 1])
poradi=poradi+1

elif pygame.key.get_pressed()[K_UP]==1 and clanky[0].yove==0 and [0, 0, -1] not in clanky[0].pohyby:
poradi=0
for c in clanky:
c.pohyby.append([poradi, 0, -1])
poradi=poradi+1
##-------------ZADAVANI-SMERU-KONEC-----------------------------------------------------------------##

if cas%delitel==0:
for c in clanky:
for d in clanky:
if c!=d:
if c.X==d.X and c.Y==d.Y:
poprve=1
start()
for c in clanky:
if c.X>24 or c.X<0 or c.Y>24 or c.Y<0:
poprve=1
start()

if pygame.key.get_pressed()[K_SPACE]==0 and stisknuto==1:
text("Pauza", 30, 85, 20, [0,0,0], 0)
pygame.display.update()
stisknuto=0
while 1:
for udalost in pygame.event.get():
"Nevim"
if pygame.key.get_pressed()[K_SPACE]==0 and stisknuto==1:
break

if pygame.key.get_pressed()[K_SPACE]==1:
stisknuto=1
else:
stisknuto=0

if pygame.key.get_pressed()[K_SPACE]==1:
stisknuto=1
else:
stisknuto=0
cas=cas+1
pockat=(10-(time.time()-dobaTrvani))/1000.0
time.sleep(pockat)
pygame.display.update()




programováno v python 2.4, pygame 1.7

Nahlásit jako SPAM
IP: 85.13.98.–
geon0
Grafoman
29. 2. 2008   #2
-
0
-

Je to super! Zpočátku trochu rychlé, ale člověk si zvykne.

Co se týče kodu, tak mi to připadá velmi přehledné, přesto, že nevím, co se v některých částech děje ... fakt pěkné. Pro větší přehlednost snad více funkcí, nebo dokonce samé funkce. Kromě importů a while 1: by vše mohlo být ve funkcích. A dokonce i některé věci z while 1: ... Ono se pak hůře ale pracuje s proměnnými, já vím ;-) - pak je to samé global - tak to je pak už lepší to nechat takto ;-)

Nahlásit jako SPAM
IP: 83.69.40.–
geon. volume doprava.
Polarski0
Newbie
29. 2. 2008   #3
-
0
-

Takovou reakci (a zrovna od tebe) jsem fakt nečekal :-) co se týče rychlosti snažil jsem se to udělat aby to bylo na všech počítačích stejně rychlé (pockat=(10-(time.time()-dobaTrvani))/1000.0), ale nemám to kde otestovat, takže nevim jeslti to funguje... Fakt díky za kladnou reakci.

Nahlásit jako SPAM
IP: 85.13.98.–
j1rka
~ Anonymní uživatel
59 příspěvků
1. 3. 2008   #4
-
0
-

Traceback (most recent call last):
File "C:/Documents and Settings/Owner/Plocha/had.py", line 2, in <module>
import pygame, sys
ImportError: No module named pygame

No nevím anglicky neumím ale asi bude potřeba něco (pygame) stáhnout... Takže chyba bude u mě. Jen nechapu proč pro python je potřeba stahovat nějake doplňky to je tak u všech jazyku?

Nahlásit jako SPAM
IP: 89.24.226.–
geon0
Grafoman
1. 3. 2008   #5
-
0
-

To j1rka : Ano. Víš, když uděláš nějaký program, tak si ho dotyčný bude taky muset stáhnout, pokud ho bude chtít používat. A pokud někdo tvůj program jako součást svého (import), tak si dotyčný bude muset stahovat oba dva programy. Leda že by druhý programátor zabudouval do svého programu stažení chybějící programu, což je ale složitější a většinou se to nedělá. U lepších programu, které jsou distrubuovány přes pypi, tam existuje další program - tuším setuptools a další - který ti stáhne všechny potřebné závislosti (tedy všechny programy, které jsou třeba k běhu toho, co stahuješ jako hlavní). Já to ale moc nepoužívám, jen jsem to jednou zkusil.

Nahlásit jako SPAM
IP: 83.69.40.–
geon. volume doprava.
j1rka
~ Anonymní uživatel
59 příspěvků
1. 3. 2008   #6
-
0
-

Aha a když udělám exe soubor přes py2exe tak pak už ale není třeba nic jineho stahovat ne?

Nahlásit jako SPAM
IP: 89.24.38.–
geon0
Grafoman
1. 3. 2008   #7
-
0
-

Pokud se ti povede ;-), tak ne. Exe ale velmi veliké, a na malé prográmky se totálně nehodí. Obzlášt když chceš, aby ti to někdo zkouknul ;-)

Nahlásit jako SPAM
IP: 83.69.40.–
geon. volume doprava.
pawlik0
Grafoman
1. 3. 2008   #8
-
0
-

Jistě, skvělé! Přidám Screenshot pro budoucí generace :-)
Edit: nevím co vám, ale mě to nejde vypnout :(

Traceback (most recent call last):

File "C:\Program Files\Python24\py_pokus.py", line 365, in -toplevel-
start()
File "C:\Program Files\Python24\py_pokus.py", line 129, in start
sys.exit()
SystemExit

Nahlásit jako SPAM
IP: 84.42.152.–
Sa Nata A Na. Howgh
Polarski0
Newbie
2. 3. 2008   #9
-
0
-

Přidal jsem novou verzi(mírná změna kódu pro plynulejší chod a přidána pauza-mezerník).<==> Editoval jsem první příspěvek. To pawlik: nevím proč ti nelze program ukončit, mě jde vše ok, možná je to tím, že máš Visty.

Nahlásit jako SPAM
IP: 85.13.98.–
SpLaSH0
Newbie
22. 3. 2008   #10
-
0
-

muzu se zeptat co nonkretne bych si mě stahnout?

Nahlásit jako SPAM
IP: 62.240.183.–
Něco jiného je umět a úplně něco jiného je chápat ..[br] (nekopírujte ale pište to sami)
Blujacker
~ Moderátor
0
Grafoman
22. 3. 2008   #11
-
0
-

pygame, hledej na googlu "download pygame"; dej pozor, aby to bylo pro tvoji verzi pythona...

Nahlásit jako SPAM
IP: 213.220.226.–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
SpLaSH0
Newbie
22. 3. 2008   #12
-
0
-

stahnul jsme si verzi co napsal polarski a pise to eroror:

Traceback (most recent call last):

File "C:\Program Files\python\hra.py", line 2, in <module>
import pygame, sys
ImportError: No module named pygame


a nevim nejspis bude chybu určitě u mě mam python 2.5 a nevim ejstli by k tomu vadil pygame verze 1.7 poradte pls rad bych s zahral a poučil

Nahlásit jako SPAM
IP: 62.240.183.–
Něco jiného je umět a úplně něco jiného je chápat ..[br] (nekopírujte ale pište to sami)
maral
~ Redaktor
0
Newbie
23. 3. 2008   #13
-
0
-

A nainstaloval jsi to? :D
Musis to umistit do adresare s ostatnima modulama...
A navic pygame vyzaduje SDL knihovnu

Nahlásit jako SPAM
IP: 85.132.176.–
pawlik0
Grafoman
23. 3. 2008   #14
-
0
-

To Polarski : Nemám Visty :). Mám XP, python 2.4.

Nahlásit jako SPAM
IP: 89.176.203.–
Sa Nata A Na. Howgh
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

Podobná vlákna

PyGame - pohyb hada — založil Pararam

Hadanicisel-maximalnipocetpokusu — založil MartinMartin12341234

Hadici — založil vestax

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý