首选,Python基础要有,基本的变量、运算符、函数、语法要清楚。
其次,写小游戏基本都在用Pygame模块来创建完全界面化的游戏,所以需要了解一些Pygame的基本模块用法,比如image、cursors、mouse、draw、event等。
最后,学会用度娘,网上源码很多,多看看多学学。
最后的最后,送你一段自学的代码。
from pygame import *
from random import randint
def create_egg():
if len(body) == 195:
over()
while True:
egg = [randint(0,15)*20+1, randint(0,15)*20+1]
for b in body:
if egg == b:
break
else:
break
draw.rect(screen, (0,255,255), tuple(egg) + (18, 18), 0)
return egg
def over():
draw.rect(screen, (255,0,0), tuple(position) + (18, 18), 0)
my_font = font.SysFont("microsoft Yahei", 30)
textSurfaceObj = my_font.render("Game Over!", True, (255,255,255))
screen.blit(textSurfaceObj, (100, 130))
display.flip()
while True:
for eve in event.get():
if eve.type == QUIT:
exit()
time.delay(30)
init()
size = 320, 320
bg = 125, 125, 125
screen = display.set_mode(size)
display.set_caption("贪吃蛇")
screen.fill(bg)
body = [[161, 161]]*3
speed = [-1, 0]
position = [161, 161]
move_flag = True
egg = create_egg()
score = 0
while True:
for eve in event.get():
if eve.type == QUIT:
exit()
if eve.type == KEYDOWN and move_flag:
move_flag = False
if eve.key == 27:
exit()
if not speed[0]:
if eve.key == K_LEFT:
speed[0] = -1
speed[1] = 0
if eve.key == K_RIGHT:
speed[0] = 1
speed[1] = 0
if not speed[1]:
if eve.key == K_UP:
speed[1] = -1
speed[0] = 0
if eve.key == K_DOWN:
speed[1] = 1
speed[0] = 0
for i in [0, 1]:
position[i] += speed[i] * 20
for p in [0, 1]:
if position[p] < 0:
position[p] = 320 + position[p]
if position[p] > 320:
position[p] = position[p] - 320
for b in body:
if position == b:
over()
body = [position[:]] + body[:]
if position == egg:
score += 1
display.set_caption(f"贪吃蛇 分数:{score}")
egg = create_egg()
body += [body[-1]]
draw.rect(screen, (0,0,0), tuple(position) + (18, 18), 0)
draw.rect(screen, (bg), tuple(body[-1]) + (18, 18), 0)
body.pop()
move_flag = True
display.flip()
time.delay(500)