前几天趁着空闲一点,MyEclpse又跑的慢,懒的开,就开始琢磨Python了。简单的学习了一下Pygame。仿照着例子编了点代码。
这段代码的功能就是控制绿的方块去碰撞白色的方块,撞到一起的时候,白色方块会消失,绿色方块会变大,继而在另外一个随机的地方出现一个白色的方 块,等于贪吃蛇的雏形了。如果再加上点复杂逻辑,不是让绿色方块简单的变大,而是形成一个方块的列表,在方块的“头”移动时,判断方向,可以转弯,就可以 实现贪吃蛇的效果了。
附上代码:
import pygame,sys,random
from pygame.locals import *
pygame.init()
mainClock = pygame.time.Clock()
# set up the window
WINDOWWIDTH = 400
WINDOWHEIGHT = 400
windowSurface = pygame.display.set_mode((WINDOWWIDTH,WINDOWHEIGHT),0,32)
pygame.display.set_caption('Test')
# set up the colors
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
WHITE = (255, 255, 255)
# set up movement variables
moveLeft = False
moveRight = False
moveUp = False
moveDown = False
MOVESPEED = 5
# set up the nake and food data structure
FOODSIZE = 15
player = pygame.Rect(300, 100, 15, 15)
food = pygame.Rect(random.randint(0, WINDOWWIDTH - FOODSIZE), random.randint(0, WINDOWHEIGHT - FOODSIZE), FOODSIZE, FOODSIZE)
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
# change the keyboard variables
if event.key == K_LEFT or event.key == ord('a'):
moveRight = False
moveLeft = True
if event.key == K_RIGHT or event.key == ord('d'):
moveLeft = False
moveRight = True
if event.key == K_UP or event.key == ord('w'):
moveDown = False
moveUp = True
if event.key == K_DOWN or event.key == ord('s'):
moveUp = False
moveDown = True
if event.type == KEYUP:
if event.key == K_ESCAPE:
pygame.quit()
sys.exit()
if event.key == K_LEFT or event.key == ord('a'):
moveLeft = False
if event.key == K_RIGHT or event.key == ord('d'):
moveRight = False
if event.key == K_UP or event.key == ord('w'):
moveUp = False
if event.key == K_DOWN or event.key == ord('s'):
moveDown = False
# move the player
if moveDown and player.bottom < WINDOWHEIGHT:
player.top += MOVESPEED
if moveUp and player.top > 0:
player.top -= MOVESPEED
if moveLeft and player.left > 0:
player.left -= MOVESPEED
if moveRight and player.right < WINDOWWIDTH:
player.right += MOVESPEED
# draw the black background onto the surface
windowSurface.fill(BLACK)
# check if the player has intersected with any food squares.
if player.colliderect(food):
temp = food
food = pygame.Rect(random.randint(0, WINDOWWIDTH - FOODSIZE), random.randint(0, WINDOWHEIGHT - FOODSIZE), FOODSIZE, FOODSIZE)
while temp==food:
food = pygame.Rect(random.randint(0, WINDOWWIDTH - FOODSIZE), random.randint(0, WINDOWHEIGHT - FOODSIZE), FOODSIZE, FOODSIZE)
player.height = player.height+15
# draw the player onto the surface
pygame.draw.rect(windowSurface, GREEN, player)
pygame.draw.rect(windowSurface, WHITE, food)
pygame.display.update()
mainClock.tick(50)
效果图见附件,一个是初始时的,一个是吃了几个白色方块后的。