zoukankan      html  css  js  c++  java
  • python 案例 012(snake)

    这个模块还需要更多时间了解


    import random
    import curses
    '''
    By wumi 2017-7-23
    
    https://www.youtube.com/watch?v=rbasThWVb-c
    Curses 使用介绍:
    http://www.cnblogs.com/starof/p/4703820.html
    '''
    s = curses.initscr()
    curses.noecho()
    curses.curs_set(0)
    sh, sw = s.getmaxyx()
    w = curses.newwin(sh, sw, 0, 0)
    w.keypad(1)   # 开启键盘模式。
    w.timeout(100)
    snk_x = sw / 4
    snk_y = sh / 2
    snake = [
        [snk_y, snk_x],
        [snk_y, snk_x - 1],
        [snk_y, snk_x - 2]
    ]
    
    food = [sh / 2, sw / 2]
    nextid = "N"
    
    w.addch(food[0], food[1], nextid)
    key = curses.KEY_RIGHT
    
    while True:
        next_key = w.getch()
        key = key if next_key == -1 else next_key
    
        if snake[0][0] in [0, sh] or snake[0][1] in [0, sw] or snake[0] in snake[1:]:
            curses.endwin()
            quit()
    
        new_head = [snake[0][0], snake[0][1]]
    
        if key == curses.KEY_DOWN:
            new_head[0] += 1
        if key == curses.KEY_UP:
            new_head[0] -= 1
    
        if key == curses.KEY_LEFT:
            new_head[1] -= 1
        if key == curses.KEY_RIGHT:
            new_head[1] += 1
    
        snake.insert(0, new_head)
    
        if snake[0] == food:
    
            food = None
            while food is None:
                nf = [
                    random.randint(1, sh - 1),
                    random.randint(1, sw - 1)
    
                ]
                food = nf if nf not in snake else None
            w.addch(food[0], food[1], nextid)
        else:
            tail = snake.pop()
            w.addch(tail[0], tail[1], ' ')
        w.addch(snake[0][0], snake[0][1], nextid)
    
    



  • 相关阅读:
    空类型指针实践
    参数作用域实践
    内联函数实践:有疑惑未解决
    可变参数实践
    默认参数实践
    函数指针实践
    Windows下开发环境搭建
    Test
    C++ 左值与右值
    如何打包成多个资源文件
  • 原文地址:https://www.cnblogs.com/TendToBigData/p/10501220.html
Copyright © 2011-2022 走看看