【python基础操作实例】(7)——pygame的下载

pygame的下载

今天看到了一个贪吃蛇的python代码
为了在电脑上运行,专门下载了pygame,好好学习,以后也可以自己写游戏代码(嘿嘿嘿)

https://www.lfd.uci.edu/~gohlke/pythonlibs/
在这里插入图片描述下载whl文件后,在cmd中更新pip
再输入以下指令
pip install --user --upgrade pip
或者python -m pip install --upgrade pip
或者python -m pip install -U --force-reinstall pip
在这里插入图片描述
最后在在cmd中下载whl文件
输入以下指令pip install (文件名)如pygame-1.9.6-cp38-cp38-win_amd64.whl

以下为贪吃蛇的代码哦(来源于网络)

#---------------------------------备注-----------------------------------
#运行环境 :
#python --v3.2.5
#pygame -- pygame-1.9.2a0.win32-py3.2
#-------------------------------------------------------------------------
#--------------------------------导入库-------------------------------------
import pygame
import random
import copy
import time
from pygame.locals import *
from sys import exit
pygame.init()
#--------------------------------新建类-------------------------------------
#-----------新建类--蛇------------------------------------------------------
class Snake:
 def __init__(self):
  #蛇头X坐标
  self.x=200
  #蛇头Y坐标
  self.y=200
  #蛇头半径大小
  self.r=5
  #蛇身数组
  self.c=[]
  #蛇身长度
  self.index=2
  #初始化按键
  self.keys = [False, False, False, False]  
 #初始化蛇的位置 
 def s_weizhi(self):
  for i in range(self.index):
   if len(self.c) < self.index+2:
    (self.c).append([self.x-(i*2*self.r),self.y])
   #调用PYGAME画出蛇头
   pygame.draw.circle(screen, (50,50,50),(self.c[i]),self.r)
 #初始化--蛇
 def s_restart(self):
  self.x=200
  self.y=200
  del self.c[:]
  self.index=2
  self.keys = [False, False, False, False]
 #设置(W,A,S,D)按键 
 def move(self):  
 #----------判断 按键 状态-------------------------
  if event.type==pygame.KEYDOWN:
   if event.key==K_w:
    if self.keys[2]:
     pass
    else:
     self.keys[0]=True
     self.keys[1]=False
     self.keys[2]=False
     self.keys[3]=False
   elif event.key==K_a:
    if self.keys[3]:
     pass
    else:
     self.keys[1]=True
     self.keys[0]=False
     self.keys[2]=False
     self.keys[3]=False
   elif event.key==K_s:
    if self.keys[0]:
     pass
    else:
     self.keys[2]=True
     self.keys[1]=False
     self.keys[0]=False
     self.keys[3]=False
   elif event.key==K_d:
    if self.keys[1]:
     pass
    else:
     self.keys[3]=True
     self.keys[1]=False
     self.keys[2]=False
     self.keys[0]=False
    
 #---------------判断 (W,A,S,D) 的操作------------------------------
  if self.keys[0]==True:
   self.c[self.index-1]=copy.copy(self.c[0])
   (self.c).insert(0,(self.c[self.index-1]))
   del self.c[self.index]
   self.c[0][1]-=10
   time.sleep (0.05)
   
  if self.keys[1]==True:
   self.c[self.index-1]=copy.copy(self.c[0])
   (self.c).insert(0,(self.c[self.index-1]))
   del self.c[self.index]
   self.c[0][0]-=10
   time.sleep (0.05)
   
  if self.keys[2]==True:
   self.c[self.index-1]=copy.copy(self.c[0])
   (self.c).insert(0,(self.c[self.index-1]))
   del self.c[self.index]
   self.c[0][1]+=10
   time.sleep (0.05)
   
  if self.keys[3]==True:
   self.c[self.index-1]=copy.copy(self.c[0])
   (self.c).insert(0,(self.c[self.index-1]))
   del self.c[self.index] 
   self.c[0][0]+=10
   time.sleep (0.05)  
   
#-----------新建类--食物------------------------------------------------------ 
class Food:
 def __init__(self):
  self.r=5
#-------------------确保食物出现的位置是 半径 的倍数-------------------
  self.rp_x = random.randint(1,59)*2*self.r
  self.rp_y = random.randint(1,59)*2*self.r
#-------------------随机食物颜色---------------------------------------
  self.rc = (random.randint(100,255), random.randint(100,255), random.randint(100,255))
 def f_weizhi(self):
#----------------预防食物刷新在 蛇身上---------------------------------------------
  if (self.rp_x == s.x and self.rp_y == s.y):
   pass
  else:
#----------------调用PYGAME画出食物---------------------------------------
   pygame.draw.circle(screen, (self.rc),(self.rp_x,self.rp_y),self.r)
#---------------------初始化食物-------------------------------------------
 def f_restart(self):
  self.rp_x = random.randint(1,59)*10
  self.rp_y = random.randint(1,59)*10
  self.rc = (random.randint(100,255), random.randint(100,255), random.randint(100,255))
 
#--------------------------设置函数---------------------------------------------------------------------------
 
#----------------------判断--是否碰中食物-------------------------------------------
def CheckEat():
 if (s.c[0][0] == f.rp_x) and (s.c[0][1] == f.rp_y):
  return True
#----------------------判断--是否碰撞墙壁-------------------------------------------- 
def CheckPen():
 if (s.c[0][0] > 600-s.r) or (s.c[0][1] > 600-s.r) or (s.c[0][0] < s.r) or (s.c[0][1] < s.r):
  return True 
#----------------------判断--是否碰中蛇身--------------------------------------------
def CheckTouch():
 for i in range(s.index-1):
  if (s.c[i+1][0] == s.c[0][0] and s.c[i+1][1] == s.c[0][1]):
   return True
#---------------------设置游戏常数------------------------------------------------------------------------------
#设置游戏窗口大小
width,height=(600,600)
#新建一个游戏窗口,窗口大小为(width,height)
screen=pygame.display.set_mode((width,height)) 
#设置游戏窗口标题
pygame.display.set_caption("tan-shi-she")
#游戏运行时的字体  
font = pygame.font.Font(None, 32)          
#游戏结束时的字体  
font_over = pygame.font.Font(None, 128)
#游戏状态
gameover=False
#重玩按钮--R----
restart_game=False
s=Snake()
f=Food()
#---------------------游戏主循环------------------------------------------------------------------------------ 
while 1:
 for event in pygame.event.get():
  if event.type==pygame.QUIT:
   pygame.quit() 
   exit(0)
#将没有图像的空间填满(白色)
 screen.fill((255,255,255))
 
 if not gameover:
  s.move()
  s.s_weizhi()
  f.f_weizhi()
  if CheckTouch():
   gameover=True
  if CheckEat():
   f.f_restart()
   s.index+=1
  if CheckPen():
   gameover=True
 else:
  #文本-游戏restart
  text_restart = font.render("按 R 键重新游戏", 1, (0, 0, 0))
  #载入文本(游戏restart)
  screen.blit(text_restart, (200,350))
  #文本-游戏结束
  text_over = font.render("Game Over", 1, (0, 0, 0)) 
  #载入文本(游戏结束)
  screen.blit(text_over, (200,250))       
  
  #按R键重新游戏
  if event.type==pygame.KEYDOWN:
   if event.key==K_r:          
    restart_game=True
  #初始化游戏  
  if restart_game:
   s.s_restart()
   f.f_restart()
   restart_game=False
   gameover = False
   
 pygame.display.flip()
 pygame.display.update()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值