关闭 More 保存 重做 撤销 预览

   
关闭   当前为简洁模式,您可以更新模块,修改模块属性和数据,要使用完整的拖拽功能,请点击进入高级模式
OD体育 OD体育
重播

上一主題 下一主題
»
李达康
LV3 流浪的疾风
帖子    30
新博币    0 提现
提现    0
TA的勋章:勋章中心
     
    3156 2 | 显示全部楼层 |倒序浏览
    python  运行环境下载 https://www.python.org/downloads/
    下载 3.7.3 最新版本 32位即可

    话不多说,先上效果图
    贪吃蛇.jpg

    代码如下:
    安装运行环境之后,把下面内容直接保存为: 贪吃蛇.py ,双击即可运行。  有点类似以前的VBS,改个后缀,文本直接变代码。 代码规则有简单的说明, 可以180度掉头,可以撞到自己身体不死,我的蛇皮我做主。

    import pygame
    import sys
    import random
    from pygame.locals import *

    # 定义目标方块的颜色
    redColor = pygame.Color(255, 0, 0) #红色 目标方块
    blackColor = pygame.Color(0, 0, 0) #黑色,背景颜色
    whiteColor = pygame.Color(255, 255, 255) # 白色
    #定义游戏结束函数
    def gameOver():
      pygame.quit()
      sys.exit()

    def  main():
        pygame.init()
        #速度变量
        fpcClock= pygame.time.Clock()
        #创建窗口
        playSurface = pygame.display.set_mode((640, 480))
        pygame.display.set_caption('李达康的蛇皮走位')
        #
        snakePosition= [100, 100]
        snakeBody=[[100, 100], [80, 100], [60, 100]]
        targetPosition = [300, 300]
        targetflag = 1
        direction = 'right'
        changeDirection = direction
        while True:
            for event in pygame.event.get():
                if event.type == QUIT:
                    pygame.quit()
                    sys.exit()
                elif event.type == KEYDOWN:
                    if event.key == K_RIGHT:
                        changeDirection = 'right'
                    if event.key == K_LEFT:
                        changeDirection = 'left'
                    if event.key == K_UP:
                        changeDirection = 'up'
                    if event.key == K_DOWN:
                        changeDirection = 'down'

            #注释掉 这代码块的 and direction != 'right': 这4段代码,蛇可以直接180度掉头,
            if changeDirection == 'left' and direction != 'right':
                direction = changeDirection
            if changeDirection == 'right' and direction != 'left':
                direction = changeDirection
            if changeDirection == 'up' and direction != 'down':
                direction = changeDirection
            if changeDirection == 'down' and direction != 'up':
                direction = changeDirection

            if direction == 'right':
                snakePosition[0] +=20
            if direction == 'left':
                snakePosition[0] -=20
            if direction == 'up':
                snakePosition[1] -=20
            if direction == 'down':
                snakePosition[1] +=20

            snakeBody.insert(0,list(snakePosition))
            #如果貪吃蛇和目標放款的位置重疊,長度加一
            # 標記為0 ,重新生成方塊
            if snakePosition[0] == targetPosition[0] and snakePosition[1] == targetPosition[1]:
                targetflag = 0
            else:
                snakeBody.pop()

            if targetflag == 0:
                x = random.randrange(1, 32)
                y = random.randrange(1, 24)
                targetPosition = [int(x*20), int(y*20)]  # 640 480
                targetflag = 1

            playSurface.fill(blackColor)

            for position in snakeBody:
                pygame.draw.rect(playSurface, whiteColor, Rect(position[0],position[1],20,20))
                pygame.draw.rect(playSurface, redColor, Rect(targetPosition[0],targetPosition[1],20,20))

            #更新到界面
            pygame.display.flip()

            #判斷遊戲結束
            if snakePosition[0] > 620 or snakePosition[0] < 0:
                gameOver()
            elif snakePosition[1] > 460 or snakePosition[1] <0:
                gameOver()
            #把pass删除,把gameOver()取消注释,即可判断贪吃蛇是否撞了自己的身体,但是我觉得撞到自己身体是不会死掉的
            for s in snakeBody[1:]:
                if snakePosition[0] == s[0] and snakePosition[1] == s[1]:
                   pass
                   #gameOver()

            fpcClock.tick(7)

    if __name__ == '__main__':
      main()



    个人签名

    xpjxb123
    LV3 流浪的疾风
    帖子    11
    新博币    0 提现
    提现    0
       
      {:7_280:}波妞9999999999999
      个人签名

      cs183699673
      LV4 路旁的落叶
      帖子    19
      新博币    0 提现
      提现    0
      TA的勋章:勋章中心
         
        999
        个人签名

        点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 淡定 生气 回帖 路过 感动 感恩
        您需要登录后才可以回帖 登录 | 立即注册

        本版积分规则

        关闭

        博牛推荐上一条 /2 下一条

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