python3 pygame中画线实例_pyGame中的小游戏示例,pygame,例子

import sys

import pygame

from pygame.locals import *

import os

import math

import random

def loadPng(name):

fullname = os.path.join(‘data’,name)

try:

image = pygame.image.load(fullname)

if image.get_alpha is None:

image = image.convert()

else:

image = image.convert_alpha()

except pygame.error as message:

print(“无法加载图片”,fullname)

raise SystemExit(message)

return image,image.get_rect()

class Ball(pygame.sprite.Sprite):

def init(self,xy,vector):

pygame.sprite.Sprite.init(self)

self.image,self.rect = loadPng(‘ball.png’)

screen = pygame.display.get_surface()

self.area = screen.get_rect()

self.vector = vector

self.hit = 0

def update(self):

newpos = self.calcnewpos(self.rect,self.vector)

self.rect = newpos

(angle,z) = self.vector

if not self.area.contains(newpos):

tl = not self.area.collidepoint(newpos.topleft)

tr = not self.area.collidepoint(newpos.topright)

bl = not self.area.collidepoint(newpos.bottomleft)

br = not self.area.collidepoint(newpos.bottomright)

if tr and tl or (br and bl):

angle = – angle

if tl and bl:

angle = math.pi – angle

if tr and br:

angle = math.pi – angle

else:

player1.rect.inflate(-3,-3)

player2.rect.inflate(-3,-3)

if self.rect.colliderect(player1.rect) == 1 and not self.hit:

angle = math.pi – angle

self.hit = not self.hit

elif self.rect.colliderect(player2.rect) == 1 and not self.hit:

angle = math.pi – angle

self.hit = not self.hit

elif self.hit:

self.hit = not self.hit

self.vector = (angle,z)

def calcnewpos(self,rect,vector):

(angle,z) = vector

(dx,dy) = (zmath.cos(angle),zmath.sin(angle))

return rect.move(dx,dy)

class Bat(pygame.sprite.Sprite):

def init(self,side):

pygame.sprite.Sprite.init(self)

self.image,self.rect = loadPng(‘bat.png’)

screen = pygame.display.get_surface()

self.area = screen.get_rect()

self.side = side

self.speed = 10

self.state = “still”

self.reinit()

def reinit(self):

self.state=”still”

self.movepos = [0,0]

if self.side == ‘left’:

self.rect.midleft = self.area.midleft

elif self.side == “right”:

self.rect.midright = self.area.midright

def update(self):

newpos = self.rect.move(self.movepos)

if self.area.contains(newpos):

self.rect = newpos

pygame.event.pump()

def moveup(self):

self.movepos[1] = self.movepos[1] – (self.speed)

self.state = “moveup”

def movedown(self):

self.movepos[1] = self.movepos[1] + (self.speed)

self.state = “movedown”

def main():

pygame.init()

screen = pygame.display.set_mode((640,480))

pygame.display.set_caption(‘basic’)

填充背景

background = pygame.Surface(screen.get_size())

background = background.convert()

background.fill((0,0,0))

选择一些基本文字

font = pygame.font.Font(None,36)

text = font.render(“hello there”,3,(10,10,10))

textpos = text.get_rect()

textpos.centerx = background.get_rect().centerx

background.blit(text,textpos)

画所有图

screen.blit(background,(0,0))

pygame.display.flip()

global player1

global player2

player1 = Bat(‘left’)

player2 = Bat(‘right’)

speed = 5

rand = ((0.1*(random.randint(5,8))))

ball = Ball((0,0),(0.45,speed))

playersprites = pygame.sprite.RenderPlain((player1,player2))

ballsprite = pygame.sprite.RenderPlain(ball)

screen.blit(background,(0,0))

pygame.display.flip()

clock = pygame.time.Clock()

事件

while True:

clock.tick(60)

for event in pygame.event.get():

if event.type == QUIT:

return

elif event.type == KEYDOWN:

if event.key == K_w:

player1.moveup()

if event.key == K_s:

player1.movedown()

if event.key == K_UP:

player2.moveup()

if event.key == K_DOWN:

player2.movedown()

elif event.type == KEYUP:

if event.key == K_w or event.key == K_s:

player1.movepos= [0,0]

player1.state = “still”

if event.key == K_UP or event.key == K_DOWN:

player2.movepos = [0,0]

player2.state = “still”

screen.blit(background,(0,0))

screen.blit(background,ball.rect,ball.rect)

screen.blit(background,player1.rect,player1.rect)

screen.blit(background,player2.rect,player2.rect)

ballsprite.update()

playersprites.update()

ballsprite.draw(screen)

playersprites.draw(screen)

pygame.display.flip()

if name == ‘main‘:

main()

Original: https://blog.csdn.net/weixin_31062007/article/details/112944804
Author: 不独行但是特立
Title: python3 pygame中画线实例_pyGame中的小游戏示例,pygame,例子

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/784085/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球