Python學習筆記 用pygame編寫小遊戲

2021-08-20 14:24:23 字數 3247 閱讀 8716

遊戲功能:小球從螢幕頂端隨機位置出現,垂直落下。滑鼠左右鍵控制擋板左右移動,接住下落的小球。若沒有接到則遊戲失敗,退出並顯示分數。效果如圖:

**如下:

#coding=utf-8

import pygame

from pygame.locals import *

import sys

import random

black =(0,0,0)

white = (255,255,255)

bg_color = (0, 0, 70)# 背景顏色

screen_size = [320,400]#螢幕大小

bar_size = [20,5]#擋板大小

ball_size = [15,15]#球的尺寸

class game(object):

def __init__(self):

pygame.init()

self.clock = pygame.time.clock()#定時器

self.screen = pygame.display.set_mode(screen_size)

pygame.display.set_caption('my game')#設定標題

#ball 初始位置

self.ball_pos_x = screen_size[0]//2 - ball_size[0]/2

self.ball_pos_y = 0

#ball 移動方向

#self.ball_dir_x = -1 #-1:left 1:right

self.ball_dir_y = 1# 1:down

self.ball_pos = pygame.rect(self.ball_pos_x,self.ball_pos_y,ball_size[0],ball_size[1])

self.score =0

self.bar_pos_x = screen_size[0]//2 - bar_size[0]//2

self.bar_pos = pygame.rect(self.bar_pos_x,screen_size[1]-bar_size[1],bar_size[0],ball_size[1])

def bar_move_left(self):#左移

self.bar_pos_x = self.bar_pos_x - 2

def bar_move_right(self):#右移

self.bar_pos_x = self.bar_pos_x + 2

def run(self):

pygame.mouse.set_visible(0) #移動滑鼠不可見

bar_move_left =false

bar_move_right = false

while true:

for event in pygame.event.get():

if event.type == quit: #當按下關閉按鍵

pygame.quit()

sys.exit()#接收到退出事件後退出程式

elif event.type == pygame.mousebuttondown and event.button ==1:#滑鼠左鍵按下

bar_move_left = true

elif event.type == pygame.mousebuttonup and event.button == 1: #左鍵彈起

bar_move_left = false

elif event.type == pygame.mousebuttondown and event.button == 3:#右鍵

bar_move_right = true

elif event.type == pygame.mousebuttonup and event.button == 3: #左鍵彈起

bar_move_right = false

if bar_move_left == true and bar_move_right ==false:

self.bar_move_left()

if bar_move_left == false and bar_move_right == true:

self.bar_move_right()

self.screen.fill(bg_color)

self.bar_pos.left = self.bar_pos_x

pygame.draw.rect(self.screen, white, self.bar_pos)

## 球移動

self.ball_pos.bottom += self.ball_dir_y * 3

pygame.draw.rect(self.screen, white, self.ball_pos)

## 判斷球是否落到板上

if self.bar_pos.top <= self.ball_pos.bottom and (

self.bar_pos.left <= self.ball_pos.right and self.bar_pos.right >= self.ball_pos.left):

self.score += 1

print("score: ", self.score, end='\r')

elif self.bar_pos.top <= self.ball_pos.bottom and (

self.bar_pos.left > self.ball_pos.right or self.bar_pos.right < self.ball_pos.left):

print("game over: ", self.score)

return self.score

## 更新球下落的初始位置

if self.bar_pos.top <= self.ball_pos.bottom:

self.ball_pos_x = random.randint(0, screen_size[0] - ball_size[0])

self.ball_pos_y = 0

self.ball_pos = pygame.rect(self.ball_pos_x, self.ball_pos_y, ball_size[0], ball_size[1])

pygame.display.update()#更新軟體介面顯示

self.clock.tick(60)

game = game()

game.run()#啟動

使用Python進行資料視覺化(二 Pygal)

首先使用pip安裝pygal windows中命令如下 python m pip install user pygal 1.7 如果用vs2017,用包管理工具 安裝pygal pygal的官網www.pygal.org 可在官網的documentation找到pygal的例項 1.繪製投骰子的直方...

python學習筆記 一 print的各種用法

print函式 print objects,sep end n file sys.stdout 3.利用 格式化輸出 類似c的printf 4.利用format輸出 5.向檔案輸出 file引數 print 裡可以用 也可以用 但要保證前後一致 python裡print可以直接輸出列表,集合,元組,...

python學習筆記,使用爬蟲用有道進行翻譯

使用爬蟲使用有道進行翻譯 import urllib.request import urllib.parse 匯入轉義傳入response中的data型別 import json content input 請輸入需要翻譯的內容 url data data i content data from a...