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

Pygame zmáčknutí – Python – Fórum – Programujte.comPygame zmáčknutí – Python – Fórum – Programujte.com

 

VitPet0
Newbie
10. 4. 2015   #1
-
0
-

Ahoj,

programuji hru a snažím se udělat aby se obrázek posouval tam kde je myš JEN když kliknu, ale jen se zobrazí a hned zase zmizí. Zde je kód podmínky terá by to měla zajišťovat:


kliknuto=="ne"
if mouse.get_pressed()[0]==1:
			klinuto = "ano"
		if klinuto=="ano":
			while 1:
				screen.blit(vybusna_lahev_obr,(pozice_mys))
				if mouse.get_pressed()[0]==1:
					break

#screen = obrazovka na kterou vykresluji
#pozice_mys jsou aktualni souradnice mysi
#vybusna_lahev_obr - obr = obrazek
#vybusna_lahev_obr obrázek s lahví

a tady celý kód:

# -*- coding: utf-8 -*-


#Alchimist Lab 2015
#by Vítek Peterka
#you can use this as you wish


#FIRST VERSION

from Tkinter import *
import base64
from pygame import *
import gtk
import os

mycolor = 0,255,0

def poprve():
	gamesave = [base64.b64encode("0"), base64.b64encode("0"), base64.b64encode("0")]
	soubor = open(os.path.dirname(os.path.abspath(__file__))+"/gamesave.txt", "w")
	soubor.write(str(gamesave))
	soubor.close
	hra(0,0,0)

def hra(p,s,sp):
	start_panel=gtk.gdk.screen_width()-2*gtk.gdk.screen_height()/5
	zaklad_sirka=start_panel+219-1
	zaklad_start_panel=800
	real_sirka=gtk.gdk.screen_width()
	docist_sirka=real_sirka-zaklad_sirka
	
	efektova_lahev=os.path.dirname(os.path.abspath(__file__)) + "/efektova_lahev.GIF"
	efektova_lahev_obr=image.load(efektova_lahev)
	vodni_lahev=os.path.dirname(os.path.abspath(__file__))+ "/vodni_lahev.GIF"
	vodni_lahev_obr=image.load(vodni_lahev)
	vybusna_lahev=os.path.dirname(os.path.abspath(__file__))+ "/vybusna_lahev.GIF"
	vybusna_lahev_obr=image.load(vybusna_lahev)
	
	sirka = gtk.gdk.screen_width()
	vyska = gtk.gdk.screen_height()
	while 1:
		klinuto="ne"
		screen = display.set_mode((sirka, vyska))
		panel = screen.subsurface (start_panel,0,219+docist_sirka-4,gtk.gdk.screen_height())
		screen.fill([0,0,255])
		panel.fill([0,255,0])
		pozice_mys=mouse.get_pos()
		panel.blit(efektova_lahev_obr,(0,0))
		panel.blit(vodni_lahev_obr,(0,160))
		if mouse.get_pressed()[0]==1:
			klinuto = "ano"
		if klinuto=="ano":
			while 1:
				screen.blit(vybusna_lahev_obr,(pozice_mys))
				if mouse.get_pressed()[0]==1:
					break
		
		display.flip()

print gtk.gdk.screen_width(), gtk.gdk.screen_height()


	

def pokracovani():
	print "nacist do 3 proměných peníze , super peníze , skóre"

okno=Tk()
okno.title("alchimist lab")

start=Button(okno, text="  zacit hru  ", command=poprve)
start.pack()

pokracovat=Button(okno, text="pokracovat", command=pokracovani)
pokracovat.pack()



okno.mainloop()
Nahlásit jako SPAM
IP: 62.245.77.–
Hmmmmmm... Sooooooo Python
gcx110
Návštěvník
12. 4. 2015   #2
-
0
-

#1 VitPet
Ahoj, můžeš mi vysvětlit, proč používáš najednou tři knihovny zároveň? A pořád ještě Python 2?


Nahlásit jako SPAM
IP: 46.23.54.–
VitPet0
Newbie
12. 4. 2015   #3
-
0
-

gtk na šířku a výšku obrazovky, Tkinter na tlačítka, Pygame na hru a python  2 protože v něm umím a tak v něm i programuju

ale už to mám opravený, na stack owerflow my odpověděli, vyřešil jsem to takhle:

# -*- coding: utf-8 -*-
#by Vítek Peterka
#you can use this as you wish


#FIRST VERSION


#importace modulů
from Tkinter import *
import base64
from pygame import *
import gtk
import os

def first_time():
	gamesave = [base64.b64encode("10000"), base64.b64encode("0"), base64.b64encode("0")]  #zakódovávání počátečních hodnot (peníze, bankovky, skóre) 
	file = open(os.path.dirname(os.path.abspath(__file__))+"/gamesave.txt", "w") #otevíraní + vytváření souboru s gamesavem
	file.write(str(gamesave)) #zapisování zakódovaných hodnot
	file.close #zavírání souboru 
	hra(10000,0,0) #otevírání hry s následujícími hodnotami: peníze 10000 , bankovky 0, skóre 0

def hra(p,b,s):
	start_panel=gtk.gdk.screen_width()-2*gtk.gdk.screen_height()/5 #výpočet začátku panelu tak "aby to dobře vypadalo"
	base_width=start_panel+219-1 # výpočet šířky od které se dopočítává
	base_start_panel=800 #výpočet základního začátku panelu od kterého se pak dopočítává
	real_width=gtk.gdk.screen_width() #opravdpvá šířka obrazovky
	add_width=real_width-base_width #výpočet čísla ketré bude připočteno k šířce panelu 
	
	effect_bottle=os.path.dirname(os.path.abspath(__file__)) + "/efektova_lahev.GIF" #hledání obrázku efektové lahve
	effect_bottle_obr=image.load(effect_bottle) #nahrávání obrázku efektové lahve
	water_bottle=os.path.dirname(os.path.abspath(__file__))+ "/vodni_lahev.GIF" # hledání obrázku vodní lahve 
	water_bottle_obr=image.load(water_bottle) #nahrávání obrázku vodní lahve
	explosive_bottle=os.path.dirname(os.path.abspath(__file__))+ "/vybusna_lahev.GIF" #hledání obrázku výbušné lahve
	explosive_bottle_obr=image.load(explosive_bottle) #nahrávání obrázku výbušné lahve
	
	width = gtk.gdk.screen_width()  # šířka obrazovky
	height = gtk.gdk.screen_height() # výška obrazovky
	
	
	
	while 1:   #hlavní smčka
		clicked="no" #přednastavení proměné o kliknutí
		screen = display.set_mode((width, height)) #incializace obrazovky
		panel = screen.subsurface (start_panel,0,219+add_width-4,gtk.gdk.screen_height()) #incializace panelu
		screen.fill([0,0,255]) #vybarvení obrazovky
		panel.fill([0,255,0]) #vybarvení panelu
		mouse_position=mouse.get_pos() #pozice myši
		panel.blit(effect_bottle_obr,(0,0)) #vykreslení obrázku efektové lahve na panel
		panel.blit(water_bottle_obr,(0,160)) #vykreslení obrázku vodní lahve na panel
		panel.blit(explosive_bottle_obr,(0,320))#vykreslení obrázku výbušné lahve na panel
		if mouse.get_pressed()[0]==1: #pokud je levé tlačítko myši zmáčknuto:
			clicked = "yes" # nastav proměnou kliknuto na ano
			
		if clicked=="yes": # pokud je proměná kliknuto na ano:
			while 1: # smyčka jako ta hlavní vylepšená o myš pronásledovanou obrázken výbušné lahve 
				screen = display.set_mode((width, height))
				panel = screen.subsurface (start_panel,0,219+add_width-4,gtk.gdk.screen_height())
				screen.fill([0,0,255])
				panel.fill([0,255,0])
				mouse_position=mouse.get_pos()
				panel.blit(effect_bottle_obr,(0,0))
				panel.blit(water_bottle_obr,(0,160))
				screen.blit(explosive_bottle_obr,(mouse_position))
				display.flip()
				
				if mouse.get_pressed()[0]==1: # pokud je znova zmáčknuto levé tlačítko myši:
					break # zastav smyčku
		
		display.flip() # obnovení obrazovky pro znovunačtení dat, tím se pohybují obrazky pohybují
	

def continue_game():
	print "nacist do 3 proměných peníze , super peníze , skóre"

okno=Tk() #incializace okna pro tlačítka
okno.title("alchimist lab") #titul okna

start=Button(okno, text="new game", command=first_time) #tlačítko pro novou hru
start.pack() #zarovnání tlačítka

continue_game=Button(okno, text=" continue ", command=continue_game) #tlačítko pro pokračování ve hře
continue_game.pack() #zarovnání tlačítka

end=Button(okno, text="     end     ", command=exit) #tlačítko pro  konec hry
end.pack() #zarovnání tlačítka



okno.mainloop() #konečné zobrazení

přidal jsem tam komentáře abys rozumněl kčemu ty knihovny jsou. Kvůl stack owerflow je kód v angličtině

Nahlásit jako SPAM
IP: 62.245.77.–
Hmmmmmm... Sooooooo Python
hanpari0
Stálý člen
13. 4. 2015   #4
-
0
-

#3 VitPet
A opravdu ti to funguje? while 1 dvakrát za sebou?

Mimochodem, gtk nepotřebuješ...

http://stackoverflow.com/questions/3129322/how-do-i-get-monitor-resolution-in-python


Nahlásit jako SPAM
IP: 178.72.234.–
VitPet0
Newbie
15. 4. 2015   #5
-
+1
-
Zajímavé

#4 hanpari
dík za ten odakz na stack owerflow použiju to, ano funguje u toho druhýho whilu je v podmínce break

Nahlásit jako SPAM
IP: 62.245.77.–
Hmmmmmm... Sooooooo Python
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, 7 hostů

Podobná vlákna

Pygame na python 2.5 — založil Polarski

Instalace pygame — založil bohetik

Pygame Linux — založil Anonymní uživatel

 

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