# -*- coding:UTF-8 -*-
import pygame
from pygame.locals import *
from sys import exitSCREEN_WIDTH=480
SCREEN_HEIGHT=640pygame.init()
screen=pygame.display.set_mode([SCREEN_WIDTH,SCREEN_HEIGHT])
pygame.display.set_caption('This is my first-game')
#载入背景图
background=pygame.image.load('images/background.bmp')
ship=pygame.image.load('images/icon.png')
ticks=0
hero_pos=[0,0]
clock=pygame.time.Clock()
#w位置字典
offset = {pygame.K_LEFT:0, pygame.K_RIGHT:0, pygame.K_UP:0, pygame.K_DOWN:0}
while True:clock.tick(60)#绘制背景surface.blit()算是很常用的函数了,# 第一个参数是图像资源,第二个参数决定图像放置的位置# (左上角的坐标)screen.blit(background,(0,0))#更新屏幕假如我们把后面两条新语句移到while循环上面会怎样?# 在这个demo中不会有明显影响,但当以后我们在屏幕中加入其它图像元素后,一执行update操作,背景图就没有了。# ticks%20<15:#这样就是每20个就变换一个位置造成了动画的效果screen.blit(ship,hero_pos)# else:# screen.blit(ship,hero_pos)ticks+=1pygame.display.update()#处理游戏退出#从消息队列中循环取出for event in pygame.event.get():if event.type==pygame.QUIT:pygame.quit()exit()if event.type==pygame.KEYDOWN:if event.key in offset:offset[event.key]=3elif event.type==pygame.KEYUP:if event.key in offset:offset[event.key]=0offset_x=offset[pygame.K_RIGHT]-offset[pygame.K_LEFT]offset_y=offset[pygame.K_DOWN]-offset[pygame.K_UP]hero_pos=[hero_pos[0]+offset_x,hero_pos[1]+offset_y]if hero_pos[1]<0:hero_pos[1]=SCREEN_HEIGHT+hero_pos[1]elif hero_pos[1]>SCREEN_HEIGHT:hero_pos[1]=hero_pos[1]-SCREEN_HEIGHTif hero_pos[0]<0:hero_pos[0]=SCREEN_WIDTH+hero_pos[0]elif hero_pos[0]>SCREEN_WIDTH:hero_pos[0]=hero_pos[0]-SCREEN_WIDTH