南街浊酒尽余欢 2018-10-25 15:11 采纳率: 0%
浏览 674

Python代码哪里错了??怎么可以运行??

#!/usr/bin/env python
#_*_ coding: utf-8 *

pygame游戏库 sys操控python运行时的环境

import pygame,sys,random
#这个模块包含各种pygame所使用的常量
from pygame.locals import *

#1.定义颜色变亮
#0-255 0黑色 255白色
redColor = pygame.Color(255,0,0)
#背景为黑色
blackColor = pygame.Color(0,0,0)
#贪吃蛇为白色
whiteColor = pygame.Color(255,255,255)

#2.定义游戏结束的函数
def gameOver():
pygame.quit()
sys.exit()
#3.定义main函数-->定义我们的入口函数 用户
def mian():
#3.1初始化pygame
pygame.init()
#3.2定义一个变量来控制速度
fpsClock = pygame.time.Clock()
#3.3>创建pygame显示层,说白了创建一个界面
playSurface = pygame.display.set_mode((640,480))
pygame.display.set_caption('贪吃蛇')

#3.4>初始化变量
#初始化贪吃蛇的起始坐标位置 我们以(100,100)为基准
snakePosition = [100,100]
#初始化贪吃蛇的长度列表中有几个元素就代表有几段身体
snakeBody =[[100,100],[100,100][60,100]]
#初始化目标方块的位置
targetPosition = [300,300]
#目标方块的标记 目的:判断是否吃掉了这个目标方块,1就是没有吃掉, 0 吃掉
targetflag = 1
#初始化方向   --> 往右
direction = 'right'
#定义一个方向变量(人为控制 案件有关系)
changeDirection = direction
#以上为准备工作
#3.5>pygame中

while Ture:

    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_LIFT:
                changeDirection = 'left'
            if event.key == K_UP:
                changeDirection = 'up'
            if event.key == K_DOWN:
                changeDirection = 'down'
                # 对应该键盘上的Esc
            if event.key == K_ESCAPE:
                pygame.event.post(pygame.event.Event(QUIT))
     #3.6>确定方向
    if changeDirection == 'left' and not direction == 'right':
        direction = changeDirection
    if changeDirection == 'right' and not direction == 'left':
         direction = changeDirection
    if changeDirection == 'up' and not direction == 'down':
        direction = cahngeDirection
    if changeDirection == 'down' and not direction == 'up':
        direction = changeDirection

    #3.7>根据方向移动蛇头
    if direction == 'right':
        snakePosition[0] += 20
    if direction == 'left':
        snakePosition[0] += 20
    if direction == 'up' :
        snakePosition[0] +=20
    if direction == 'down':
        snakePosiotion[0] += 20
    #3.8增加蛇的长度
    snakeBody.insert(0,list(snakePosition))
    #如果贪吃蛇的位置和目标方块的位置重合    意味着蛇吃掉它了  目标方块为0
    if snakePosition[0] == targetPosition[0] and snakePosition[1] == targetPosition[1]:
        targetflag = 0
    else:
        snakBody.pop()

    if targetflag == 0:
        x= random.randrange(1,32)
        y = random.randrange(1,24)
        targetPosition = [int(x*20),int(y*20)]
        targetflag = 1
    #3.9填充背景颜色
    playSurface.fill(blackColor)

    for position in snakeBody:
        #画蛇
        pygame.draw.rect(playSurface,whiteColor,Rect(position[0],position[1],20,20))
        #画目标方块
        pygame.draw.rect(playSurface,redColor,redColor, Rect(targetPosition[0],targetPosition[1],20,20))
    #第一个参数surface:指定一个surface,在这个区域内控制,界面
    #第二个参数color:颜色
    #第三个参数 Rect:返回一个矩形((x,y), (width,height))
    #第四个参数 width:标示线条的粗细    width=0填充 实心儿 width= 1空心儿
    #4.更新显示到屏幕表面
    pygame.display.flip()
    #判断是否游戏结束
    if snakePosition[0] > 620 or snakePosition[0] < 0:
        gameOver()
    elif snakePosition[1] > 460 or sankePosition[1] < 0:
        gameOver()
    #控制游戏速度
    fpsClock.tick(5)

    #5.启动这个入口函数

if name == "__main__":
main()

  • 写回答

1条回答 默认 最新

  • Italink 2018-10-25 15:30
    关注

    楼主这代码是看着教程写的吧,好多变量函数名写错了,移动位置也有问题,改好了,如果有用请采纳.

    import pygame,sys,random
    #这个模块包含各种pygame所使用的常量
    from pygame.locals import *
    #1.定义颜色变亮
    #0-255 0黑色 255白色
    redColor = pygame.Color(255,0,0)
    #背景为黑色
    blackColor = pygame.Color(0,0,0)
    #贪吃蛇为白色
    whiteColor = pygame.Color(255,255,255)
    #2.定义游戏结束的函数
    def gameOver():
        pygame.quit()
        sys.exit()
    #3.定义main函数-->定义我们的入口函数 用户
    def main():
    
        pygame.init()
    #3.2定义一个变量来控制速度
        fpsClock = pygame.time.Clock()
    #3.3>创建pygame显示层,说白了创建一个界面
        playSurface = pygame.display.set_mode((640,480))
        pygame.display.set_caption('贪吃蛇')
    #3.4>初始化变量
    #初始化贪吃蛇的起始坐标位置 我们以(100,100)为基准
        snakePosition = [100,100]
    #初始化贪吃蛇的长度列表中有几个元素就代表有几段身体
        snakeBody =[[100,100],[100,100],[60,100]]
    #初始化目标方块的位置
        targetPosition = [300,300]
    #目标方块的标记 目的:判断是否吃掉了这个目标方块,1就是没有吃掉, 0 吃掉
        targetflag = 1
    #初始化方向   --> 往右
        direction = 'right'
    #定义一个方向变量(人为控制 案件有关系)
        changeDirection = direction
    #以上为准备工作
    #3.5>pygame中
        while 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_RIGHT:
                        changeDirection = 'right'
                    if event.key == pygame.K_LEFT:
                        changeDirection = 'left'
                    if event.key == pygame.K_UP:
                        changeDirection = 'up'
                    if event.key == pygame.K_DOWN:
                        changeDirection = 'down'
                        # 对应该键盘上的Esc
                    if event.key == pygame.K_ESCAPE:
                        pygame.event.post(pygame.event.Event(pygame.QUIT))
                #3.6>确定方向
            if changeDirection == 'left' and not direction == 'right':
                direction = changeDirection
            if changeDirection == 'right' and not direction == 'left':
                    direction = changeDirection
            if changeDirection == 'up' and not direction == 'down':
                direction = changeDirection
            if changeDirection == 'down' and not direction == 'up':
                direction = changeDirection
    
            #3.7>根据方向移动蛇头
            if direction == 'right':
                snakePosition[0] += 20
            if direction == 'left':
                snakePosition[0] -= 20
            if direction == 'up' :
                snakePosition[1] -=20
            if direction == 'down':
                snakePosition[1] += 20
            #3.8增加蛇的长度
            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)]
                targetflag = 1
            #3.9填充背景颜色
            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))
            #第一个参数surface:指定一个surface,在这个区域内控制,界面
            #第二个参数color:颜色
            #第三个参数 Rect:返回一个矩形((x,y), (width,height))
            #第四个参数 width:标示线条的粗细    width=0填充 实心儿 width= 1空心儿
            #4.更新显示到屏幕表面
            pygame.display.flip()
            #判断是否游戏结束
            if snakePosition[0] > 620 or snakePosition[0] < 0:
                gameOver()
            elif snakePosition[1] > 460 or snakePosition[1] < 0:
                gameOver()
            #控制游戏速度
            fpsClock.tick(5)
    
        #5.启动这个入口函数
    
    main()
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试