# -*- codeing = utf-8 -*- |
# @Time:2020/10/21 20:16 |
# @File:贪吃蛇.py |
# @Software:PyCharm |
import pygame as p |
import easygui |
import random |
import copy |
def pause(): |
easygui.msgbox( "点击按钮以开始游戏" , "贪吃蛇" ) |
def MianLoop(): |
gameover = False |
snake_list = [[ 10 , 10 ]] |
food_point = [random.randint( 10 , 490 ),random.randint( 10 , 490 )] |
p.init() |
icon = p.image.load( "./images/icon.jpg" ) |
screen = p.display.set_mode(( 500 , 500 )) |
clock = p.time.Clock() |
p.display.set_caption( "贪吃蛇" ) |
p.display.set_icon(icon) |
move_up = False |
move_down = False |
move_left = False |
move_right = False |
pause() |
score = 0 |
running = True |
while running: |
clock.tick( 20 ) |
screen.fill([ 50 , 50 , 50 ]) |
for e in p.event.get(): |
if e. type = = p.QUIT: |
import sys |
sys.exit( 0 ) |
if e. type = = p.KEYDOWN: |
if move_down ! = True : |
if e.key = = p.K_w or e.key = = p.K_UP: |
move_up = True |
move_down = False |
move_left = False |
move_right = False |
if move_up ! = True : |
if e.key = = p.K_s or e.key = = p.K_DOWN: |
move_up = False |
move_down = True |
move_left = False |
move_right = False |
if move_right ! = True : |
if e.key = = p.K_a or e.key = = p.K_LEFT: |
move_up = False |
move_down = False |
move_left = True |
move_right = False |
if move_left ! = True : |
if e.key = = p.K_d or e.key = = p.K_RIGHT: |
move_up = False |
move_down = False |
move_left = False |
move_right = True |
if e.key = = p.K_SPACE: |
pause() |
pos = len (snake_list) - 1 |
while pos > 0 : |
snake_list[pos] = copy.deepcopy(snake_list[pos - 1 ]) |
pos - = 1 |
if move_up: |
snake_list[pos][ 1 ] - = 10 |
if snake_list[pos][ 1 ] < 0 : |
snake_list[pos][ 1 ] = 500 |
if move_down: |
snake_list[pos][ 1 ] + = 10 |
if snake_list[pos][ 1 ] > 500 : |
snake_list[pos][ 1 ] = 0 |
if move_left: |
snake_list[pos][ 0 ] - = 10 |
if snake_list[pos][ 0 ] < 0 : |
snake_list[pos][ 0 ] = 500 |
if move_right: |
snake_list[pos][ 0 ] + = 10 |
if snake_list[pos][ 0 ] > 500 : |
snake_list[pos][ 0 ] = 0 |
food_reck = p.draw.circle(screen,[ 255 , 50 , 50 ],food_point, 13 , 0 ) |
for point in snake_list: |
p.draw.circle(screen,[ 255 , 255 , 0 ],point, 5 , 0 ) |
snake_rect = [] |
for snake_pos in snake_list: |
snake_rect.append(p.draw.circle(screen,[ 255 , 255 , 0 ],point, 5 , 0 )) |
if food_reck.collidepoint(snake_pos): |
snake_list.append(food_point) |
food_point = [random.randint( 10 , 490 ),random.randint( 10 , 490 )] |
score + = 1 |
food_reck = p.draw.circle(screen,[ 255 , 50 , 50 ],food_point, 13 , 0 ) |
for snake in snake_list[ 1 :]: |
if snake[ 0 ] = = snake_list[ 0 ][ 0 ] and snake[ 1 ] = = snake_list[ 0 ][ 1 ]: |
gameover = True |
|
if gameover: |
file = open ( "./data/data.data" , "r" ) |
lszgfs = file .read() |
file .close() |
if len (snake_list) > int (lszgfs): |
file = open ( "./data/data.data" , "w" ) |
lszgfs = len (snake_list) |
file .write( str (lszgfs)) |
file .close() |
easygui.msgbox(f "游戏结束\n新纪录:{len(snake_list)}" ) |
else : |
easygui.msgbox(f "游戏结束\n分数:{len(snake_list)}\n历史最高分数:{lszgfs}" ) |
file .close() |
break |
p.display.update() |
if __name__ = = "__main__" : |
while True : |
MianLoop() |
初级程序员
by: 54188 发表于:2021-07-24 11:00:08 顶(0) | 踩(0) 回复
麻烦把图片发一下
回复评论