zoukankan      html  css  js  c++  java
  • 小朋友做对题才能玩的游戏

    做题的脚本:http://brotherxing.blog.51cto.com/3994225/1273092

    #^_^coding=gbk ^_^
    import linecache,sys,os
    score_list = 8
    def set_answer():
    #数据分割
    print '-----------------'
    global items,items1,items2,items3,items4,answers_dict
    f = [ x.replace(' ','') for x in linecache.getlines('question.txt')]
    items = [filter(lambda k:k.startswith(str(x)),f) for x in range(1,6)]
    items1 = filter(lambda k:k.startswith('A:'),f)
    items2 = filter(lambda k:k.startswith('B:'),f)
    items3 = filter(lambda k:k.startswith('C:'),f)
    items4 = filter(lambda k:k.startswith('D:'),f)
    answers = [ x.replace(' ','') for x in f if len(x) == 1 ]
    #把正确答案组成一个字典,方便后面字典查询
    answers_dict = { x:answers[x] for x in xrange(3)}


    def get_question_cnt():
    return len(items1)


    def score():
    global score_list
    '判断用户输入的答案和正确答案是否一样,正确加2分,错误-4'
    for x in range(len(items1)):
    items_input = raw_input('{0} {1} {2} {3} {4} '.
    format(str(items[x][0]),items1[x],items2[x],items3[x],items4[x]))
    if items_input.upper() == answers_dict[x]:
    score_list += 2
    print '恭喜您,回答正确! 您现在的分数是 %d' % score_list
    else:
    score_list = score_list - 4
    print '回答错误 扣除4分! 您现在的分数是 %d' % score_list
    if score_list >= (8+2*len(items1)):
    print 'congratulations you get full score,start to play now'
    #启动游戏
    os.popen('python snake.py')
    sys.exit(0)

    def welcome():
    welcome_info = raw_input('嘿嘿,欢迎来到python的小游戏世界.(y:进入,q:退出) :' )
    while True:
    if welcome_info == 'y':
    raw_input('总共%d题,四个答案(A,B,C,D),选择其中一个答案, 基础分数8分,
    答对一题加2分,错误减4分 按回车继续' % 3)
    break
    else:
    print '成功退出!!!!!'
    score_list=0
    sys.exit(0)
    break


    # 定义main函数
    def main():
    set_answer()
    welcome()
    score()


    if __name__ == "__main__":
    main()

    还有一个简单的方案二:

    #coding=gbk
    import sys
    import os
    import linecache
    list = raw_input('嘿嘿,欢迎来到python的小游戏世界.(y:进入,q:退出。)')
    if list.lower() != 'y':
    print '您已经成功退出!!!'
    sys.exit(0)
    listdata = linecache.getlines('question.txt')
    raw_input("规则:你现在有8个积分,以下5道问题,请输入A,B,C,D确定答案,答对得2分,答错扣4分,请按回车开始答题! ")
    print "开始进入游戏咯"
    mark = 8
    for x in range(3):
    x *= 7
    answers = raw_input(''.join(listdata[x:x+5]))
    if answers == 'q':
    break
    if answers.upper() == listdata[x+5][0]:
    mark += 2
    else:
    mark -= 4
    if mark <= 0:
    print '您的分数已经小于0!!,请在来一次!!'
    break
    print '您现在的分数是 %d' %mark

    if mark >= 14:
    print 'congratulations you get full score'
    #启动游戏
    os.popen('python snake.py')
    sys.exit(0)

    做题答对之后,开始进入玩游戏:贪吃蛇

    #!/usr/bin/env python
    # -- coding: utf-8 --
    import pygame,sys,time,random
    from pygame.locals import *
    # 定义颜色变量
    redColour = pygame.Color(255,0,0)
    #背景色设置
    backColour = pygame.Color(0,150,0)
    whiteColour = pygame.Color(255,255,255)
    greyColour = pygame.Color(150,150,150)

    #高和宽最好是cell的整数倍
    cellSize=20
    windowWidth=cellSize*30
    windowHeight=cellSize*20

    # 定义gameOver函数
    def gameOver(playSurface):
    #gameOverFont = pygame.font.Font('arial.ttf',72)
    #gameOverFont = pygame.font.Font("arial",72)
    #gameOverFont = pygame.font.SysFont("",72)
    gameOverFont = pygame.font.SysFont("arial",72)

    gameOverSurf = gameOverFont.render('Game Over', True, greyColour)
    gameOverRect = gameOverSurf.get_rect()
    gameOverRect.midtop = (320, 10)

    #2为蛇的初始长度
    ScoreSurf = gameOverFont.render('Score: %s' % (len(snakeSegments)-2), True, (255, 0, 0))
    ScoreRect = ScoreSurf.get_rect()
    ScoreRect.center = (windowWidth*2/3, windowHeight*2/3)


    playSurface.blit(gameOverSurf, gameOverRect)
    playSurface.blit(ScoreSurf, ScoreRect)
    pygame.display.flip()
    #从5秒改成了1秒
    time.sleep(1)
    flag=True
    while(flag):
    for event in pygame.event.get():
    if event.type==QUIT:
    pygame.quit()
    sys.exit()
    if event.type==KEYDOWN:
    if event.key==K_SPACE:
    pygame.quit()
    sys.exit()
    flag=False


    #绘制网格
    def drawgrid():
    for i in xrange(cellSize,windowWidth,cellSize):
    pygame.draw.line(playSurface,(0,255,0),(i,0),(i,windowHeight),1)
    for j in xrange(cellSize,windowHeight,cellSize):
    pygame.draw.line(playSurface,(0,255,0),(0,j),(windowWidth,j),1)


    def gameStart():
    playSurface.fill((0, 150, 0))
    drawgrid()

    fontObj1 = pygame.font.Font('freesansbold.ttf', 60)
    textSurfaceObj1 = fontObj1.render('Greedy Snake', True, (255,255,255))
    textRectObj1 = textSurfaceObj1.get_rect()
    textRectObj1.center = (windowWidth/2, windowHeight/3)
    playSurface.blit(textSurfaceObj1,textRectObj1)

    fontObj2 =pygame.font.Font('freesansbold.ttf', 30)
    textSurfaceObj2 = fontObj2.render('Devloper: you', True,(0, 0, 0))
    textRectObj2 = textSurfaceObj2.get_rect()
    textRectObj2.center = (windowWidth/2, windowHeight*2/3)
    playSurface.blit(textSurfaceObj2,textRectObj2)

    pygame.display.update()
    flag=True
    while(flag):
    for event in pygame.event.get():
    if event.type==QUIT:
    pygame.quit()
    sys.exit()
    if event.type==KEYDOWN:
    if event.key==K_SPACE:
    flag=False

    def insnake(SrcPos):
    for pos in snakeSegments[0:]:
    if SrcPos[0] == pos[0] and SrcPos[1] == pos[1]:
    print '------------'
    return 1;
    else:
    print SrcPos[0], pos[0],SrcPos[1],pos[1]
    print '+++++++++'
    return 0;

    # 定义main函数
    def main():
    # 初始化pygame
    pygame.init()
    fpsClock = pygame.time.Clock()
    # 创建pygame显示层
    global playSurface
    playSurface= pygame.display.set_mode((windowWidth,windowHeight))
    gameStart()
    pygame.display.set_caption('Raspberry Snake')
    drawgrid()
    count=0

    # 初始化变量
    snakePosition = [100,100]
    global snakeSegments
    #snakeSegments = [[100,100],[80,100],[60,100],[40,100],[20,100],[0,100],]
    snakeSegments = [[100,100],[0,0]]
    raspberryPosition = [300,300]
    raspberrySpawned = 1
    direction = 'right'
    changeDirection = direction
    while True:
    # 检测例如按键等pygame事件
    for event in pygame.event.get():
    if event.type == QUIT:
    pygame.quit()
    sys.exit()
    elif event.type == KEYDOWN:
    # 判断键盘事件
    if event.key == K_RIGHT or event.key == ord('d'):
    changeDirection = 'right'
    if event.key == K_LEFT or event.key == ord('a'):
    changeDirection = 'left'
    if event.key == K_UP or event.key == ord('w'):
    changeDirection = 'up'
    if event.key == K_DOWN or event.key == ord('s'):
    changeDirection = 'down'
    if event.key == K_ESCAPE:
    pygame.event.post(pygame.event.Event(QUIT))
    # 判断是否输入了反方向
    if changeDirection == 'right' and not direction == 'left':
    direction = changeDirection
    if changeDirection == 'left' and not direction == 'right':
    direction = changeDirection
    if changeDirection == 'up' and not direction == 'down':
    direction = changeDirection
    if changeDirection == 'down' and not direction == 'up':
    direction = changeDirection
    # 根据方向移动蛇头的坐标
    if direction == 'right':
    snakePosition[0] += cellSize
    if direction == 'left':
    snakePosition[0] -= cellSize
    if direction == 'up':
    snakePosition[1] -= cellSize
    if direction == 'down':
    snakePosition[1] += cellSize
    # 增加蛇的长度
    snakeSegments.insert(0,list(snakePosition))
    # 判断是否吃掉了树莓
    if snakePosition[0] == raspberryPosition[0] and snakePosition[1] == raspberryPosition[1]:
    raspberrySpawned = 0
    else:
    snakeSegments.pop()
    # 如果吃掉树莓,则重新生成树莓
    if raspberrySpawned == 0:
    Recreate=1
    while Recreate:
    x = random.randrange(1,windowWidth/cellSize)
    y = random.randrange(1,windowHeight/cellSize)
    raspberryPosition = [int(x*cellSize),int(y*cellSize)]
    #如果生成的树莓刚好处于蛇占用的位置,则重新生成
    if (not insnake(raspberryPosition)):
    count+=1
    print count
    Recreate=0;


    raspberrySpawned = 1
    # 绘制pygame显示层
    playSurface.fill(backColour)
    for position in snakeSegments:
    pygame.draw.rect(playSurface,whiteColour,Rect(position[0],position[1],cellSize,cellSize))
    pygame.draw.rect(playSurface,redColour,Rect(raspberryPosition[0], raspberryPosition[1],cellSize,cellSize))

    drawgrid()
    # 刷新pygame显示层
    pygame.display.flip()
    # 判断是否死亡
    if snakePosition[0] > windowWidth or snakePosition[0] < 0:
    gameOver(playSurface)
    if snakePosition[1] > windowHeight or snakePosition[1] < 0:
    gameOver(playSurface)

    for snakeBody in snakeSegments[1:]:
    if snakePosition[0] == snakeBody[0] and snakePosition[1] == snakeBody[1]:
    gameOver(playSurface)


    # 控制游戏速度
    fpsClock.tick(5)

    if __name__ == "__main__":
    main()

    水平有限,如果有错误,请帮忙提醒我。如果您觉得本文对您有帮助,可以点击下面的 推荐 支持一下我。版权所有,需要转发请带上本文源地址,博客一直在更新,欢迎 关注 。
  • 相关阅读:
    kubernetes 中遇见的一些坑(持续更新)
    Docker网络解决方案-Flannel部署记录
    理解Docker :Docker 网络
    全面剖析Redis Cluster原理和应用
    python发送钉钉机器人脚本
    centos 7 部署LDAP服务
    zabbix 同步ldap帐号脚本
    zabbix TCP 连接数监控
    WebDriver基本操作入门及UI自动化练手页面
    Jmeter使用入门
  • 原文地址:https://www.cnblogs.com/10087622blog/p/7613796.html
Copyright © 2011-2022 走看看