亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

Python貪吃蛇游戲編寫代碼

2020-02-23 04:31:53
字體:
來源:轉載
供稿:網友

最近在學Python,想做點什么來練練手,命令行的貪吃蛇一般是C的練手項目,但是一時之間找不到別的,就先做個貪吃蛇來練練簡單的語法。

由于Python監聽鍵盤很麻煩,沒有C語言的kbhit(),所以這條貪吃蛇不會自己動,運行效果如下:

要求:用#表示邊框,用*表示食物,o表示蛇的身體,O表示蛇頭,使用wsad來移動

Python版本:3.6.1

系統環境:Win10

類:

  board:棋盤,也就是游戲區域

  snake:貪吃蛇,通過記錄身體每個點來記錄蛇的狀態

  game:游戲類

  本來還想要個food類的,但是food只需要一個坐標,和一個新建,所以干脆使用list來保存坐標,新建food放在game里面,從邏輯上也沒有太大問題

源碼:

# Write By Guobao# 2017/4//7## 貪吃蛇# 用#做邊界,*做食物,o做身體和頭部# python 3.6.1import copyimport randomimport osimport msvcrt# the board class, used to put everythingclass board:  __points =[]  def __init__(self):    self.__points.clear()    for i in range(22):      line = []      if i == 0 or i == 21:        for j in range(22):          line.append('#')      else:        line.append('#')        for j in range(20):          line.append(' ')        line.append('#')      self.__points.append(line)  def getPoint(self, location):    return self.__points[location[0]][location[1]]  def clear(self):    self.__points.clear()    for i in range(22):      line = []      if i == 0 or i == 21:        for j in range(22):          line.append('#')      else:        line.append('#')        for j in range(20):          line.append(' ')        line.append('#')      self.__points.append(line)  def put_snake(self, snake_locations):    # clear the board    self.clear()    # put the snake points    for x in snake_locations:      self.__points[x[0]][x[1]] = 'o'    # the head    x = snake_locations[len(snake_locations) - 1]    self.__points[x[0]][x[1]] = 'O'  def put_food(self, food_location):    self.__points[food_location[0]][food_location[1]] = '*'  def show(self):    os.system("cls")    for i in range(22):      for j in range(22):        print(self.__points[i][j], end='')      print()# the snake classclass snake:  __points = []  def __init__(self):    for i in range(1, 6):      self.__points.append([1, i])  def getPoints(self):    return self.__points  # move to the next position  # give the next head  def move(self, next_head):    self.__points.pop(0)    self.__points.append(next_head)  # eat the food  # give the next head  def eat(self, next_head):    self.__points.append(next_head)  # calc the next state  # and return the direction  def next_head(self, direction='default'):    # need to change the value, so copy it    head = copy.deepcopy(self.__points[len(self.__points) - 1])    # calc the "default" direction    if direction == 'default':      neck = self.__points[len(self.__points) - 2]      if neck[0] > head[0]:        direction = 'up'      elif neck[0] < head[0]:        direction = 'down'      elif neck[1] > head[1]:        direction = 'left'      elif neck[1] < head[1]:        direction = 'right'    if direction == 'up':      head[0] = head[0] - 1    elif direction == 'down':      head[0] = head[0] + 1    elif direction == 'left':      head[1] = head[1] - 1    elif direction == 'right':      head[1] = head[1] + 1    return head# the gameclass game:  board = board()  snake = snake()  food = []  count = 0  def __init__(self):    self.new_food()    self.board.clear()    self.board.put_snake(self.snake.getPoints())    self.board.put_food(self.food)  def new_food(self):    while 1:      line = random.randint(1, 20)      column = random.randint(1, 20)      if self.board.getPoint([column, line]) == ' ':        self.food = [column, line]        return  def show(self):    self.board.clear()    self.board.put_snake(self.snake.getPoints())    self.board.put_food(self.food)    self.board.show()  def run(self):    self.board.show()    # the 'w a s d' are the directions    operation_dict = {b'w': 'up', b'W': 'up', b's': 'down', b'S': 'down', b'a': 'left', b'A': 'left', b'd': 'right', b'D': 'right'}    op = msvcrt.getch()    while op != b'q':      if op not in operation_dict:        op = msvcrt.getch()      else:        new_head = self.snake.next_head(operation_dict[op])        # get the food        if self.board.getPoint(new_head) == '*':          self.snake.eat(new_head)          self.count = self.count + 1          if self.count >= 15:            self.show()            print("Good Job")            break          else:            self.new_food()            self.show()        # 反向一Q日神仙        elif new_head == self.snake.getPoints()[len(self.snake.getPoints()) - 2]:          pass        # rush the wall        elif self.board.getPoint(new_head) == '#' or self.board.getPoint(new_head) == 'o':          print('GG')          break        # normal move        else:          self.snake.move(new_head)          self.show()      op = msvcrt.getch()game().run()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品va在看黑人| 精品呦交小u女在线| 伊人久久男人天堂| 国产在线久久久| 精品国产乱码久久久久久婷婷| 欧美性视频精品| 亚洲日本中文字幕| 欧美日韩国产中文字幕| 亚洲欧美日韩成人| 丝袜亚洲另类欧美重口| 欧美放荡办公室videos4k| 久久人人爽亚洲精品天堂| 亚洲人成在线一二| 久久艹在线视频| 亚洲无亚洲人成网站77777| 成人激情视频在线| 中文字幕一区二区精品| 亚洲欧美三级伦理| 日韩中文字幕在线精品| 日韩av在线影视| 欧美与欧洲交xxxx免费观看| 久久久精品国产网站| 亚洲精品免费av| 日韩精品视频免费专区在线播放| 久久色免费在线视频| 久久影院资源站| 深夜福利91大全| 中文字幕国产精品| 91精品久久久久久综合乱菊| 日本中文字幕成人| 九九精品视频在线| 8x拔播拔播x8国产精品| 最近2019中文免费高清视频观看www99| 欧美成人精品激情在线观看| 日韩美女视频中文字幕| 国内久久久精品| www国产精品com| 欧美—级a级欧美特级ar全黄| 国产婷婷97碰碰久久人人蜜臀| 欧洲午夜精品久久久| 亚洲电影免费观看高清| 欧美黑人性生活视频| 久久天堂av综合合色| 亚洲精品98久久久久久中文字幕| 亚洲免费一在线| 日韩在线欧美在线国产在线| 欧美日韩亚洲视频| 国产精品免费观看在线| 欧美自拍视频在线观看| 国产精品99久久久久久白浆小说| 国产日本欧美一区| 久久精品国产一区| 日韩成人中文字幕在线观看| www.久久久久| 国产精品男人爽免费视频1| 欧美精品在线免费| 亚洲成人黄色网址| 懂色av影视一区二区三区| 成人淫片在线看| 2019中文在线观看| 伦理中文字幕亚洲| 国产在线拍揄自揄视频不卡99| 在线精品国产欧美| 91免费看片网站| 日韩福利伦理影院免费| 狠狠操狠狠色综合网| 国产成人啪精品视频免费网| 欧美性色19p| 精品欧美一区二区三区| 欧美久久精品一级黑人c片| 欧美中文在线视频| 欧美性高跟鞋xxxxhd| 自拍偷拍亚洲区| 成人有码在线视频| 热久久这里只有| 欧美中文字幕在线观看| 欧美精品生活片| 色综合色综合网色综合| 中文字幕精品国产| 粗暴蹂躏中文一区二区三区| 国产视频久久久久| 久久视频这里只有精品| 成人精品视频在线| 视频在线观看99| 琪琪第一精品导航| 亚洲国产精品va在线看黑人动漫| 日韩av电影在线免费播放| 国外成人在线直播| 日韩精品在线第一页| 色多多国产成人永久免费网站| 91av免费观看91av精品在线| 91精品国产高清| 久久精品国产99国产精品澳门| 久久久999成人| 456亚洲影院| 亚洲国产精品嫩草影院久久| 亚洲国产精品久久精品怡红院| 中文日韩在线视频| 国产福利成人在线| 亲爱的老师9免费观看全集电视剧| 久久人人爽人人爽人人片av高请| 欧美日韩激情视频8区| 日本高清视频一区| 亚洲欧美福利视频| 狠狠色噜噜狠狠狠狠97| 国产精品网红福利| 青青在线视频一区二区三区| 国产精品久久久久久久久久小说| 亚洲精品中文字幕女同| 国产女精品视频网站免费| 亚洲国模精品私拍| 日本精品视频在线观看| 97精品国产91久久久久久| 91精品国产高清久久久久久91| 亚洲高清在线观看| 欧美激情一级欧美精品| 国产一区二区av| 国产精品久久久久久久久久三级| 久久欧美在线电影| 日韩av在线网页| 国产亚洲精品va在线观看| 在线视频日本亚洲性| 欧美专区国产专区| 亚洲精品少妇网址| 成人激情视频在线| 成人国产亚洲精品a区天堂华泰| 国产视频丨精品|在线观看| 在线视频中文亚洲| 日韩视频亚洲视频| 久久精品国产免费观看| 久久中文久久字幕| 久久久久999| 欧美电影免费观看电视剧大全| 成人久久久久爱| 欧美激情网站在线观看| 日韩成人小视频| 久久久久久久电影一区| 久热爱精品视频线路一| 91久久久国产精品| 亚洲最大中文字幕| 国产精品久久久久久久久免费看| 国产精品第一页在线| 92看片淫黄大片欧美看国产片| 国产亚洲欧美视频| 精品国产拍在线观看| 亚洲第一视频网站| 欧美性xxxxx极品娇小| 国产精品免费久久久| 成人h片在线播放免费网站| 日韩av一卡二卡| 亚洲一区美女视频在线观看免费| 久久夜精品va视频免费观看| 97精品国产97久久久久久| 久久露脸国产精品| 91爱爱小视频k| 欧美综合第一页| 欧美日韩第一视频| 日本91av在线播放| 最近更新的2019中文字幕| 在线亚洲午夜片av大片| 欧美精品在线播放| 成人免费黄色网| 不卡在线观看电视剧完整版| 91在线高清视频|