Как в pygame сделать реакцию на столкновение?
Да нет, когда дерева столкнули и написано "BOOOOOOOM!" я это могу сделать запросто
чтоб мяч не отскочил а остановился и когда игрок пошел в противоположную сторону то мяч не прилип к дереву а пошел
import os
import shutil
import subprocess
import sys
import zipfile
from multiprocessing import process
from PyQt5.QtWidgets import QApplication, QProgressBar, QWidget, QLineEdit, QPushButton, \
QVBoxLayout, QHBoxLayout
from PyQt5.QtCore import QThread, pyqtSignal
import urllib.request
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class Downloader(QThread):
# Сигнал о количестве данных (PyQt5)
preprogress = pyqtSignal(float)
progress = pyqtSignal(float)
# fileUrl - url - файла, включая сам файл
# filename - имя файла
def __init__(self, fileUrl, fileName):
QThread.__init__(self)
# Флаг инициализации
self._init = False
self.fileUrl = fileUrl
self.fileName = fileName
def run(self):
# тест на локальных данных, но работать должно и с сетью
r = urllib.request.urlretrieve(self.fileUrl, self.fileName, self._progress)
if r:
zf = zipfile.ZipFile(self.fileName, 'r')
for _ in zf.namelist():
zf.extractall('c://test//'+self.fileName.split('.')[0])
def _progress(self, block_num, block_size, total_size):
if not self._init:
self.preprogress.emit(total_size)
self._init = True
# Расчет текущего количества данных
downloaded = block_num * block_size
if downloaded < total_size:
# Отправляем промежуток
self.progress.emit(downloaded)
else:
# Чтобы было 100%
self.progress.emit(total_size)
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(100, 100, 600, 180)
self.setWindowTitle('GTO Games')
self.downloader = None
self.fileUrl = QLineEdit('https://www.7-zip.org/a/7za920.zip')
self.buttonga = QPushButton('Играть', self)
self.loadButton = QPushButton('Скачать', self)
self.buttonga.move(10, 10)
self.loadButton.move(10, 50)
self.unzipButton = QPushButton('Распаковать', self)
self.unzipButton.move(120, 10)
#self.unzipButton.clicked.connect(self.unzipp)
self.loadButton.clicked.connect(self._loadFile)
hbox = QHBoxLayout()
hbox.addWidget(self.loadButton)
vbox = QVBoxLayout(self)
vbox.addLayout(hbox)
self.bar = QProgressBar()
vbox.addWidget(self.bar)
def initializeUI(self):
self.buttonga.clicked.connect(self.exerun)
# self.unzipButton = QPushButton('Распаковать', self)
# self.unzipButton.move(120, 10)
# self.unzipButton.clicked.connect(self.unzipp)
self.show()
def _loadFile(self):
ar = self.fileUrl.text().split('/')
if len(ar) == 0:
return
fileName = f'_{ar[len(ar) - 1]}'
print(fileName)
self._download = Downloader(self.fileUrl.text(), fileName)
# Устанавливаем максимальный размер данных
self._download.preprogress.connect(lambda x: self.bar.setMaximum(round(x)))
# Промежуточный/скачанный размер
self._download.progress.connect(lambda d: self.bar.setValue(round(d)))
self._download.start()
print("D_Start")
self.loadButton.hide()
def exerun(self):
# z = zipfile.ZipFile('Mods.zip', 'w') # Создание нового архива
# for root, dirs, files in os.walk('./'): # Список всех файлов и папок в директории folder
# for file in files:
# z.write(os.path.join(root, file)) # Создание относительных путей и запись файлов в архив
#
# z.close()
args = [r".\Vintagestory.exe", "--connect=xx.xxx.xxx.xx", "--pw=9029"]
subprocess.call(args)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
<img src="/wa-data/public/shop/themes/hypermarketcustom/img/svg/empty_photo.svg" alt="БЕЗ КРЫШКИ Контейнер Д-Полимер 0,500 л PP 186*132 прозр. (100) (500) ДП" itemprop="image">
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome(
'C://Users/roman/AppData/Local/Programs/Python/Python37-32/Lib/site-packages/selenium/common/chromedriver_win32 (1)/chromedriver.exe')
driver.get('https://upakovka-spb.ru/category/2-odnorazovaya-posuda/11-kontyeynyery/')
images = driver.find_elements_by_css_selector('img[src*=svg]')
for _ in images:
print(_.get_attribute("alt"))
import pygame
class any_bot():
def __init__(self, sceen, image_type=0, x=600, y=150):
self.sceen = sceen
self.x = x
self.y = y
self.image_type = image_type
self._image(image_type)
@property
def rect(self):
return self._image(self.image_type)
def _image(self, image_type):
images = ['C:\\дерево pygame.bmp','C:\\дерево pygame 1.bmp']
img = pygame.image.load(images[image_type])
img.set_colorkey((255, 255, 255))
rect_image = img.get_rect(center=(self.x, self.y))
self.sceen.blit(img, rect_image)
return rect_image
import pygame as pg
import sys
from bots import *
clock = pg.time.Clock()
def game_process():
go_right=0# Начало движения первого дерева
go_letf= 800# Начало движения ворого дерева
s = pg.display.set_mode((900, 400))
while 1:
go_right +=3# движения первого дерева
go_letf -=3# движения ворого дерева
for i in pg.event.get():
if i.type == pg.QUIT:
pg.quit()
sys.exit()
clock.tick(60)
tree1 = any_bot(s,0,go_right,100)#Создание дерева из класса
tree2 = any_bot(s,1,go_letf,100)#Создание второго дерева тем же методом
if pygame.sprite.collide_rect(tree1, tree2):# Если два дерева сталкиваются
print('BOOOOOOM!!!')#Пишем БУУУУУМ!
pygame.display.update()
game_process()
оно по tkinter а не про pygame.
в tkinter все по другому а в pygame тоже все по другому....
Этот код работает в сто раз быстрее
Результат сохраняется в json