首页 > 编程语言 >python打砖块

python打砖块

时间:2024-12-05 21:28:19浏览次数:6  
标签:python self 50 pygame 砖块 250 image rect

import pygame
from pygame.locals import *
import time
import random
import sys
import os
pygame.init()

canvas = pygame.display.set_mode((1000,625))

pygame.display.set_caption("打砖块")
class Ball(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image=pygame.image.load("ball.png")
        self.image=pygame.transform.scale(self.image,(50,50))
        self.rect=self.image.get_rect()
        position=[100,100]
        self.rect.center=position
        self.speed=[-1,-1]
    def xianshi(self):
        canvas.blit(self.image,self.rect)
    def move(self):
        self.rect=self.rect.move(self.speed)
    def hit(self):
            if self.rect.top<=0 :
                self.speed[1]=-self.speed[1]
                self.rect=self.rect.move(self.speed)
            if self.rect.left<=0 or self.rect.right>=1000:
                self.speed[0]=-self.speed[0]
                self.rect=self.rect.move(self.speed)

class Enemy(pygame.sprite.Sprite):
    def __init__(self,pos):
        pygame.sprite.Sprite.__init__(self)
        self.image=pygame.image.load("enemy.png")
        self.image=pygame.transform.scale(self.image,(50,30))
        self.rect=self.image.get_rect()
        self.rect.center=pos
    def xianshi(self):
        canvas.blit(self.image,self.rect)
    def move(self):
        self.rect=self.rect.move(self.speed)
bj=pygame.sprite.Group()
banlist=[(50,50),(150,50),(250,50),(350,50),(450,50),(550,50),(650,50),(750,50),(850,50),(950,50),
(50,100),(150,100),(250,100) , (350,100),(450,100),(550,100),(650,100),(750,100),(850,100),(950,100),
(50,150),(150,150),(250,150) , (350,150),(450,150),(550,150),(650,150),(750,150),(850,150),(950,150),
(50,200),(150,200),(250,200) , (350,200),(450,200),(550,200),(650,200),(750,200),(850,200),(950,200),
(50,250),(150,250),(250,250) , (350,250),(450,250),(550,250),(650,250),(750,250),(850,250),(950,250),
  ]
for i in range(50):
    enemy = Enemy(banlist[i])
    bj.add(enemy)
class Ban(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image=pygame.image.load("1.png")
        self.image=pygame.transform.scale(self.image,(200,20))
        self.rect=self.image.get_rect()
        self.rect.center=(500,610)
    def xianshi(self):
        canvas.blit(self.image,self.rect)
ban=Ban()


def handleEvent():
    for event in pygame.event.get():
        if event.type == QUIT :
            pygame.quit()
            sys.exit()
ball=Ball()
score=0
lenl = 0
while True:
    canvas.fill((255, 255, 255))
    ball.xianshi()
    ball.move()
    ball.hit()
    ban.xianshi()
    for e in bj:
        e.xianshi()
    keys=pygame.key.get_pressed()
    if keys[K_LEFT]:
        ban.rect.left -= 2
        if ban.rect.left <= 0:
            ban .rect.left = 0
    if keys[K_RIGHT]:
        ban.rect.left += 2
        if ban.rect.right >= 1000:
            ban.rect.right = 1000

    if pygame.sprite.collide_rect(ball,ban):
        ball.speed[1] = random.randint(-2,-1)
        lenl +=1
    if pygame.sprite.spritecollide(ball,bj,1):
        score+=1
    font = pygame.font.SysFont("kaiti", 40)
    text = font.render("分数:" +str(score)+"能量"+str(lenl),True,(0,0,0))
    canvas.blit(text, (0,0))
    handleEvent()
    pygame.display.update()


标签:python,self,50,pygame,砖块,250,image,rect
From: https://blog.csdn.net/rhz20131230/article/details/144276581

相关文章

  • 【python】新人小白极速入手,免配置环境变量
    嗨,大家好,想必大家对python入门比较困惑,我今天教大家如何快速的进入python中~1首先先下载VSCode,选用的主要目的是体积小巧,便于配置低的同学也能搭建。https://code.visualstudio.com/Download下载应该很简单吧——2下载python环境,这里推荐3.9/3.11,目前比较主流https://w......
  • CAE工程师使用python等脚本进行自动化的好处
    简介编写一个脚本或工具来加快进程可能看起来令人生畏,或者不值得花费精力。如果只需要几个小时就能完成任务,为什么还要花一天时间编写脚本呢?答案是,这往往不是你唯一一次做“某事”。可能是一次,也可能是10次或100次。这就是脚本能真正帮助你的地方。但它并不局限于“加快速......
  • 扩展01:代码风格/python规范style
    一.风格介绍修饰的前提是“跑通”代码,也就是说先确保你的code没有任何bug这种“修饰”并不是对每一个都强制学习的内容二.缩进与换行1.缩进1.)如果有开始定界符,其余行的缩进需与开始定界符对齐。2.)需要额外的4个空格(长度相当于一个Tab键),以区分开传入参数,和其他内容。3.)空......
  • Python学习|科学计算基础之Numpy
    一、实验目的(1)了解numpy.ndarray数组的各种基本属性(2)掌握数组的各种访问方式。(3)掌握常用的统计函数。二、实验内容1.了解NumPy数组的基本属性In:importnumpyasnpIn:np.__version__          #显示NumPy版本,注意前后都是两个下画线In:a=np.arange(......
  • Python第七次作业
    1.设计一个函数,可以传入一个或多个单词的字符串,并返回该字符串,但所有五个或更多字母的单词都前后颠倒。2.给定一个字符串,判断该字符事是否是回文回文是指顺读或倒读都一样的字、诗句等,如aabaa、abacaba是回文,aaabaaaa则不是回文3.存在一个列表,列表的元素都是从1~N的元素......
  • python - sqlachemy
    这是一个ORM框架(已经包含连接池)安装插件pipinstallpymysqlsqlalchemy参数配置fromsqlalchemyimportcreate_engine,text#定义数据库连接字符串DATABASE_URI='mysql+pymysql://{username}:{password}@{host}:{port}/{dbname}?charset=utf8mb4'#替换为你的数......
  • python - logger
    日志配置importloggingfromlogging.handlersimportTimedRotatingFileHandler#NOTSET<DEBUG<INFO<WARNING<ERROR<CRITICAL#创建一个loggerlogger=logging.getLogger('default')logger.setLevel(logging.DEBUG)#日志输出格式formatte......
  • python - mysql交互
    python与mysql交互,能找到两个库pymysql和mysql-connector-python因为两个都是基于DB-API2.0标准‌,使用上差别并不大,区别就是mysql-connector-python是由Oracle官方提供,性能可能会好一些。安装依赖pipinstallmysql-connector-python事务(update)importmysql.co......
  • python - with
    with用法很像java中的try(){}代码块,调用对象之后,会自动执行资源释放函数。在python中,要使用with语句,需要实现两个特殊方法:__enter__和__exit__。比如:classSession:def__enter__(self):print("Enteringcontext")returnself#返回上下文管......
  • python - 安装pip插件
    功能:安装各种插件,功能与maven类似windows环境下,安装包中自带这个插件,检查路径./Scripts,如果包含pip.exe文件,则无须安装安装官网:https://pip.pypa.io/en/stable/installation/Downloadthescript,fromhttps://bootstrap.pypa.io/get-pip.py.Openaterminal/command......