建视频网站需要多少钱,网站建设工作策划方案,创建网站超链接,个人wordpress 手机Pygame专为Python设计#xff0c;支持多平台#xff08;如Windows、Mac OS X、Linux、Android等#xff09;#xff0c;提供简单易用的API来创建2D游戏。它不仅仅局限于游戏开发#xff0c;还可用于图形界面和音频应用。
Pygame提供了简洁的API#xff0c;使得开发者可以…Pygame专为Python设计支持多平台如Windows、Mac OS X、Linux、Android等提供简单易用的API来创建2D游戏。它不仅仅局限于游戏开发还可用于图形界面和音频应用。
Pygame提供了简洁的API使得开发者可以快速上手并创建游戏原型。我花了几个小时学习第二天就开发出了贪吃蛇的主体功能代码不到100行。
我的设计思路和算法主要如下
1、每次蛇移动都先填充整个窗口背景遮盖原来蛇的图形然后在新的位置重新绘制以达到蛇移动的视觉效果。
2、蛇身由多个小正方形组成每次蛇移动后面的小正方形便移动到前一个小正方形的当前位置上以此类推所以控制蛇身移动的方向只要控制蛇头移动的方向即可。
3、当遇到窗口边缘时蛇从另一边出来。
完整代码如下
import pygame,sys
from random import randintpygame.init()
screen pygame.display.set_mode((800,600))
screen.fill((145,120,60))alen 20 #每一节蛇身体的边长
x_step alen #x的步进值
y_step 0 #y的步进值
food_rect ()
#蛇身体由多个小正方形组成
snake [(300,400,alen,alen),(280,400,alen,alen),(260,400,alen,alen),(240,400,alen,alen),(220,400,alen,alen),(200,400,alen,alen)]
last_snake[]def move_head():到达窗口边界就从另外一边出来r snake[0]#蛇头if (r[0](screen.get_width())) and last_snake[1][0]alenr[0]: #向右到达右边界snake[0] (0,r[1],r[2],r[3]) elif r[0]0 and last_snake[1][0]r[0]alen: #向左到达左边界snake[0] (screen.get_width()-alen,r[1],r[2],r[3])elif r[1](screen.get_height()) and last_snake[1][1]alenr[1]: #向下到达下边界snake[0] (r[0],0,r[2],r[3])elif r[1]0 and last_snake[1][1]r[1]alen: #向上到达上边界snake[0] (r[0],screen.get_height()-alen,r[2],r[3]) else:snake[0] (r[0]x_step,r[1]y_step,r[2],r[3])def move():蛇前进每一节蛇身体的下一个坐标是它的前一节身体的当前坐标global x_step,y_step,last_snake pygame.time.delay(300) last_snake snake.copy() for i in range(len(snake)-1,-1,-1):if i0:snake[i] snake[i-1] move_head() draw_snake()def draw_snake():for s in snake:pygame.draw.rect(screen,(0,0,255),s)def draw_food():global food_rectif len(food_rect)0:xf randint(1,screen.get_width())//alen*alen #食物出现的位置应被alen整除yf randint(1,screen.get_height())//alen*alenfood_rect (xf,yf,alen,alen)pygame.draw.rect(screen,(255,0,0),food_rect)def eat():global snake,last_snake,food_rectif snake[0]food_rect:last_snake.insert(0,food_rect)snake last_snake.copy()food_rect ()return Trueelse:return Falsewhile True:for event in pygame.event.get():if event.type pygame.QUIT:#关闭窗口pygame.quit()sys.exit()elif event.type pygame.KEYDOWN:if event.key pygame.K_UP:x_step 0y_step -alenelif event.key pygame.K_RIGHT:x_step aleny_step 0elif event.key pygame.K_LEFT:x_step -aleny_step 0elif event.key pygame.K_DOWN:x_step 0y_step alenscreen.fill((145,120,60)) #填充背景抹掉上一次的绘图draw_food()if eat():draw_snake()else:move()pygame.display.flip()