吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3724|回复: 14
收起左侧

[Python 转载] 贪吃蛇完整版

[复制链接]
Eric_zhao 发表于 2019-11-25 17:02
import pygame
import sys
import time
import random
from pygame.locals import *
#
pygame.init()
size = width, height = 350,350
screen = pygame.display.set_mode((size))
t = pygame.time.Clock()
snake_head = [110,50]
snake_body = [[110,50],[100,50],[90,50],[80,50],[70,50]]


foodx  = random.randint(5,30)*10
foody  = random.randint(5,30)*10
# fx = "RIGHT"
# while True:
#     t.tick(5)
#     for event in pygame.event.get():
#         if event.type == QUIT:
#             pygame.quit()
#             sys.exit()
def Fx2():
    if event.type == KEYDOWN and event.key == K_LEFT:
        # snak_head[0] -=10
        global fx
        if fx != "RIGHT":
            fx ="LEFT"
    if event.type == KEYDOWN and event.key == K_RIGHT:
        # snak_head[0] -=10
        if fx != "LEFT":
            fx ="RIGHT"
    if event.type == KEYDOWN and event.key == K_DOWN:
        # snak_head[0] -=10
        if fx != "UP":
            fx ="DOWN"
    if event.type == KEYDOWN and event.key == K_UP:
        # snak_head[0] -=10
        if fx != "DOWN":
            fx ="UP"
def Move2():
    if fx == "RIGHT":
        snake_head[0]+=10
    if fx == "LEFT":
        snake_head[0]-=10
    if fx == "DOWN":
        snake_head[1]+=10
    if fx == "UP":
        snake_head[1]-=10
#
#     screen.fill((255, 255, 255))
#     # snak_head[0] += 10
#     print(snak_head)
#     snak_body.insert(0,list(snak_head))
#     snak_body.pop()
#     print(snak_body)
#     for i in snak_body:
#         pygame.draw.rect(screen,(0,0,0),(i[0],i[1],10,10))
#
#     pygame.display.update()


fx = "K_d"
def Fx():
    if event.type == KEYDOWN and event.key == K_w:
        # snake_head[1]-=10
        global fx
        if fx != "K_s":
            fx = "K_w"


    if event.type == KEYDOWN and event.key == K_a:
        # snake_head[0] -= 10
        if fx != "K_d":
            fx = "K_a"
    if event.type == KEYDOWN and event.key == K_s:
        # snake_head[1]+=10
        if fx != "K_w":
            fx = "K_s"
    if event.type == KEYDOWN and event.key == K_d:
        # snake_head[0]+=10
        if fx != "K_a":
            fx = "K_d"
def Rest():
    global fx,foody,foodx,snake_head,snake_body,score,kaiguan
    while True:
        event=pygame.event.poll()
        if event.type == QUIT:
            pygame.quit()
        if event.type == KEYDOWN and event.key == K_RETURN:
            fx = "K_d"
            snake_head = [110, 50]
            snake_body = [[110, 50], [100, 50], [90, 50], [80, 50], [70, 50]]


            foodx = random.randint(5, 30) * 10
            foody = random.randint(5, 30) * 10
            score = 0
            kaiguan=0
            break




def Move():
    # global fx
    if fx == "K_a":
        snake_head[0]-=10
    if fx == "K_d":
        snake_head[0]+=10
    if fx == "K_s":
        snake_head[1]+=10
    if fx == "K_w":
        snake_head[1]-=10
def Fontf(mx,ziti,x,y):
    afont = pygame.font.Font(None,40)
    bfont = afont.render(ziti,True,(255,0,0))
    screen.blit(bfont,(x,y))
    pygame.display.update()
def color():
    r = random.randint(0,255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    color1 = (r,g,b)
    return color1
list3 = []
for i in range(5):
    colors = color()
    list3.append(colors)
print(list3)


n = 0
score = 0
kaiguan = 0
while 1:
    n+=1
    t.tick(5)
    screen.fill((0,0,0))
    # colors = color()
    # list.append(colors)


    # print(colors)
    pygame.draw.rect(screen,(255,0,0),(foodx,foody,10,10))
    if snake_head == [foodx,foody]:
        foodx = random.randint(5, 30) * 10
        foody = random.randint(5, 30) * 10
        snake_body.append([-10,-10])
        score+=1
        
    Fontf(40,"score:"+str(score),200,0)
    if snake_head[0]<=-10 or snake_head[0]>=400 or snake_head[1]<=-10 or snake_head[1]>=400:
        kaiguan = 1
    if snake_head in snake_body[1:]:
        kaiguan = 1   
    if kaiguan:
        Fontf(40,"you lose",100,150)
        # break
        Rest()
        # while True:
        #     event = pygame.event.poll()
        #     if event.type == QUIT:
        #         pygame.quit()
        #     if event.type == KEYDOWN and event.key == K_RETURN:
        #         fx = "K_d"
        #         snake_head = [110, 50]
        #         snake_body = [[110, 50], [100, 50], [90, 50], [80, 50], [70, 50]]
        #
        #         foodx = random.randint(5, 30) * 10
        #         foody = random.randint(5, 30) * 10
        #         score = 0
        #         kaiguan =0
        #         break




    for i in snake_body:
        pygame.draw.rect(screen,list3[n%5], (i[0], i[1], 10, 10))
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        Fx()


        # if event.type==KEYDOWN and event.key==K_w:
        #     # snake_head[1]-=10
        #     if fx !="K_s":
        #         fx = "K_w"
        #
        # if event.type == KEYDOWN and event.key == K_a:
        #     # snake_head[0] -= 10
        #     if fx !="K_d":
        #         fx = "K_a"
        # if event.type==KEYDOWN and event.key==K_s:
        #     # snake_head[1]+=10
        #     if fx !="K_w":
        #         fx = "K_s"
        # if event.type==KEYDOWN and event.key==K_d:
        #     # snake_head[0]+=10
        #     if fx !="K_a":
        #         fx = "K_d"


    # if fx == "K_a":
    #     snake_head[0]-=10
    # if fx == "K_d":
    #     snake_head[0]+=10
    # if fx == "K_s":
    #     snake_head[1]+=10
    # if fx == "K_w":
    #     snake_head[1]-=10
    # snake_head[0] += 10
    Move()


    snake_body.insert(0,list(snake_head))
    snake_body.pop()


    pygame.display.update()






























发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| Eric_zhao 发表于 2019-11-26 17:39

编程语言python开发的贪吃蛇小游戏   只要有环境运行起来就可以玩哦:想要运行  必须安装python解释器,或者再安装个工具  pycharm等,如果真的感兴趣不妨了解下python再研究
libra0930 发表于 2019-11-25 19:15

import pygame
import sys
import time
import random
from pygame.locals import *
#
pygame.init()
size = width, height = 350,350
screen = pygame.display.set_mode((size))
t = pygame.time.Clock()
snake_head = [110,50]
snake_body = [[110,50],[100,50],[90,50],[80,50],[70,50]]


foodx  = random.randint(5,30)*10
foody  = random.randint(5,30)*10
# fx = "RIGHT"
# while True:
#     t.tick(5)
#     for event in pygame.event.get():
#         if event.type == QUIT:
#             pygame.quit()
#             sys.exit()
def Fx2():
    if event.type == KEYDOWN and event.key == K_LEFT:
        # snak_head[0] -=10
        global fx
        if fx != "RIGHT":
            fx ="LEFT"
    if event.type == KEYDOWN and event.key == K_RIGHT:
        # snak_head[0] -=10
        if fx != "LEFT":
            fx ="RIGHT"
    if event.type == KEYDOWN and event.key == K_DOWN:
        # snak_head[0] -=10
        if fx != "UP":
            fx ="DOWN"
    if event.type == KEYDOWN and event.key == K_UP:
        # snak_head[0] -=10
        if fx != "DOWN":
            fx ="UP"
def Move2():
    if fx == "RIGHT":
        snake_head[0]+=10
    if fx == "LEFT":
        snake_head[0]-=10
    if fx == "DOWN":
        snake_head[1]+=10
    if fx == "UP":
        snake_head[1]-=10
#
#     screen.fill((255, 255, 255))
#     # snak_head[0] += 10
#     print(snak_head)
#     snak_body.insert(0,list(snak_head))
#     snak_body.pop()
#     print(snak_body)
#     for i in snak_body:
#         pygame.draw.rect(screen,(0,0,0),(i[0],i[1],10,10))
#
#     pygame.display.update()


fx = "K_d"
def Fx():
    if event.type == KEYDOWN and event.key == K_w:
        # snake_head[1]-=10
        global fx
        if fx != "K_s":
            fx = "K_w"


    if event.type == KEYDOWN and event.key == K_a:
        # snake_head[0] -= 10
        if fx != "K_d":
            fx = "K_a"
    if event.type == KEYDOWN and event.key == K_s:
        # snake_head[1]+=10
        if fx != "K_w":
            fx = "K_s"
    if event.type == KEYDOWN and event.key == K_d:
        # snake_head[0]+=10
        if fx != "K_a":
            fx = "K_d"
def Rest():
    global fx,foody,foodx,snake_head,snake_body,score,kaiguan
    while True:
        event=pygame.event.poll()
        if event.type == QUIT:
            pygame.quit()
        if event.type == KEYDOWN and event.key == K_RETURN:
            fx = "K_d"
            snake_head = [110, 50]
            snake_body = [[110, 50], [100, 50], [90, 50], [80, 50], [70, 50]]


            foodx = random.randint(5, 30) * 10
            foody = random.randint(5, 30) * 10
            score = 0
            kaiguan=0
            break




def Move():
    # global fx
    if fx == "K_a":
        snake_head[0]-=10
    if fx == "K_d":
        snake_head[0]+=10
    if fx == "K_s":
        snake_head[1]+=10
    if fx == "K_w":
        snake_head[1]-=10
def Fontf(mx,ziti,x,y):
    afont = pygame.font.Font(None,40)
    bfont = afont.render(ziti,True,(255,0,0))
    screen.blit(bfont,(x,y))
    pygame.display.update()
def color():
    r = random.randint(0,255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    color1 = (r,g,b)
    return color1
list3 = []
for i in range(5):
    colors = color()
    list3.append(colors)
print(list3)


n = 0
score = 0
kaiguan = 0
while 1:
    n+=1
    t.tick(5)
    screen.fill((0,0,0))
    # colors = color()
    # list.append(colors)


    # print(colors)
    pygame.draw.rect(screen,(255,0,0),(foodx,foody,10,10))
    if snake_head == [foodx,foody]:
        foodx = random.randint(5, 30) * 10
        foody = random.randint(5, 30) * 10
        snake_body.append([-10,-10])
        score+=1
        
    Fontf(40,"score:"+str(score),200,0)
    if snake_head[0]<=-10 or snake_head[0]>=400 or snake_head[1]<=-10 or snake_head[1]>=400:
        kaiguan = 1
    if snake_head in snake_body[1:]:
        kaiguan = 1   
    if kaiguan:
        Fontf(40,"you lose",100,150)
        # break
        Rest()
        # while True:
        #     event = pygame.event.poll()
        #     if event.type == QUIT:
        #         pygame.quit()
        #     if event.type == KEYDOWN and event.key == K_RETURN:
        #         fx = "K_d"
        #         snake_head = [110, 50]
        #         snake_body = [[110, 50], [100, 50], [90, 50], [80, 50], [70, 50]]
        #
        #         foodx = random.randint(5, 30) * 10
        #         foody = random.randint(5, 30) * 10
        #         score = 0
        #         kaiguan =0
        #         break




    for i in snake_body:
        pygame.draw.rect(screen,list3[n%5], (i[0], i[1], 10, 10))
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        Fx()


        # if event.type==KEYDOWN and event.key==K_w:
        #     # snake_head[1]-=10
        #     if fx !="K_s":
        #         fx = "K_w"
        #
        # if event.type == KEYDOWN and event.key == K_a:
        #     # snake_head[0] -= 10
        #     if fx !="K_d":
        #         fx = "K_a"
        # if event.type==KEYDOWN and event.key==K_s:
        #     # snake_head[1]+=10
        #     if fx !="K_w":
        #         fx = "K_s"
        # if event.type==KEYDOWN and event.key==K_d:
        #     # snake_head[0]+=10
        #     if fx !="K_a":
        #         fx = "K_d"


    # if fx == "K_a":
    #     snake_head[0]-=10
    # if fx == "K_d":
    #     snake_head[0]+=10
    # if fx == "K_s":
    #     snake_head[1]+=10
    # if fx == "K_w":
    #     snake_head[1]-=10
    # snake_head[0] += 10
    Move()


    snake_body.insert(0,list(snake_head))
    snake_body.pop()


    pygame.display.update()
迈克老狼 发表于 2019-11-25 17:18
coolcalf 发表于 2019-11-25 17:18
无图无真相啊
wind-mill 发表于 2019-11-25 17:19
这个要怎么用的起来?
zhwh_max 发表于 2019-11-25 17:32
很赞  发给我同学
YH459923797 发表于 2019-11-25 17:38
怎么用的 ?大哥  我改了 html   bat   exe  都不行  
吾爱文 发表于 2019-11-25 17:41
咋用?这个?
sizhubiao 发表于 2019-11-25 17:45
楼主真技术宅,膜拜膜拜,感谢分享!
爱猪 发表于 2019-11-25 18:01
这个,不会用啊,大神,给个说明吧。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 17:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表