http://www.lfyzjck.com/2010-10-14/355.html

自己打算写个,先把别人mark下,到时参考下

第一次用Python写这种比较实用且好玩的东西,权当练手吧

游戏说明:

* P键控制“暂停/开始”

源代码如下:

from Tkinter import *
import tkMessageBox,sys
from random import randintclass Grid(object):def __init__(self,master=None,window_width=800,window_height=600,grid_width=50,offset=10):self.height = window_heightself.width = window_widthself.grid_width = grid_widthself.offset = offsetself.grid_x = self.width/self.grid_widthself.grid_y = self.height/self.grid_widthself.bg = "#EBEBEB"self.canvas = Canvas(master, width=self.width+2*self.offset, height=self.height+2*self.offset, bg=self.bg)self.canvas.pack()self.grid_list()def draw(self, pos, color,):x = pos[0]*self.grid_width + self.offsety = pos[1]*self.grid_width + self.offsetself.canvas.create_rectangle(x, y, x+self.grid_width, y+self.grid_width,fill=color,outline=self.bg)def grid_list(self):grid_list = []for y in range(0,self.grid_y):for x in range(0,self.grid_x):grid_list.append((x,y))self.grid_list = grid_listclass Food(object):def __init__(self, Grid):self.grid = Gridself.color = "#23D978"        self.set_pos()def set_pos(self):x = randint(0,self.grid.grid_x - 1)y = randint(0,self.grid.grid_y - 1)self.pos =  (x, y)    def display(self):self.grid.draw(self.pos,self.color)class Snake(object):def __init__(self, Grid):self.grid = Gridself.body = [(10,6),(10,7),(10,8)]self.direction = "Up"self.status = ['run','stop']self.speed = 300self.color = "#5FA8D9"        self.food = Food(self.grid)self.display_food()self.gameover = Falseself.score = 0def available_grid(self):return [i for i in self.grid.grid_list if i not in self.body[2:]]def change_direction(self, direction):self.direction = directiondef display(self):for (x,y) in self.body:self.grid.draw((x,y),self.color)def display_food(self):while(self.food.pos in self.body):self.food.set_pos()self.food.display()def move(self):head = self.body[0]if self.direction == 'Up':new = (head[0], head[1]-1)elif self.direction == 'Down':new = (head[0], head[1]+1)elif self.direction == 'Left':new = (head[0]-1,head[1])else:new = (head[0]+1,head[1])if not self.food.pos == head:         pop = self.body.pop()self.grid.draw(pop,self.grid.bg)else:self.display_food()self.score += 1self.body.insert(0,new)      if not new in self.available_grid():self.status.reverse()            self.gameover = Trueelse:self.grid.draw(new,color=self.color)class SnakeGame(Frame):def __init__(self,master=None, *args, **kwargs):Frame.__init__(self, master)self.master = masterself.grid = Grid(master=master,*args, **kwargs)self.snake = Snake(self.grid)self.bind_all("<KeyRelease>", self.key_release)self.snake.display()def run(self):if not self.snake.status[0] == 'stop':self.snake.move()if self.snake.gameover == True:message =  tkMessageBox.showinfo("Game Over", "your score: %d" % self.snake.score)if message == 'ok':sys.exit()self.after(self.snake.speed,self.run)def key_release(self, event):key = event.keysymkey_dict = {"Up":"Down","Down":"Up","Left":"Right","Right":"Left"}if key_dict.has_key(key) and not key == key_dict[self.snake.direction]:self.snake.change_direction(key)self.snake.move()elif key == 'p':self.snake.status.reverse()if __name__ == '__main__':root = Tk()snakegame = SnakeGame(root)snakegame.run()snakegame.mainloop()
---------------------------------------------另一篇文章--------------------------------------
http://topic.csdn.net/u/20110806/09/4a22a9d3-d587-4cff-9bf1-d386fd1a9fa9.html
学习Pygame也有一段时间了,现在自己动手练习练习。效果如图:

源代码下载:http://download.csdn.net/source/3498185

曾经在论坛里看到有强人用汇编写的贪吃蛇,感觉自己还是太菜了,还需要努力学习。

用Python写了个贪吃蛇相关推荐

  1. python的ai写作_神奇,用Python写一个AI贪吃蛇,真的可以追着你跑的那种

    语言选择 Life is short, use python! 所以,根本就没多想,直接上python. 最初版本 先让你的程序跑起来 一开始我的目标仅仅是让程序去控制贪吃蛇运动,让它去吃食物,仅此而 ...

  2. 用Python写了一个贪吃蛇大冒险小游戏

  3. python50行小游戏_50行python代码实现的贪吃蛇小游戏

    50行python代码实现的贪吃蛇小游戏 发布于 2014-09-01 21:26:24 | 1337 次阅读 | 评论: 1 | 来源: 网友投递 Python编程语言Python 是一种面向对象. ...

  4. 【python教程入门学习】Python实现自动玩贪吃蛇程序

    这篇文章主要介绍了通过Python实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹 ...

  5. 手起刀落-一起来写经典的贪吃蛇游戏

    回味 小时候玩的经典贪吃蛇游戏我们印象仍然深刻,谋划了几天,小时候喜欢玩的游戏,长大了终于有能力把他做出来(从来都没有通关过,不知道自己写的程序,是不是能通关了...),好了,闲话不多谈,先来看一下效 ...

  6. c语言中怎么暂停一个一个游戏,求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束...

    求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束 /* 以下是主要的逻辑代码,还有些.c和.h就没发了 ...

  7. Python使用pygame编写贪吃蛇小游戏

    Python使用pygame编写贪吃蛇小游戏 代码如下: # -*- coding:utf-8 -*- """ 贪吃蛇 """ import ...

  8. python60行绘图程序_不敢相信,60行python代码就写出了贪吃蛇游戏

    通过写游戏玩编程是一个非常有趣的事,网上用Python写贪吃蛇的代码很多,大部分都用类来写的,比较复杂.今天看到一个非常简洁的贪吃蛇游戏代码,只有60几行,非常适合小白上手,而且思路极其清晰,赶紧分享 ...

  9. 贪吃蛇python撞墙不死_不敢相信,60行python代码就写出了贪吃蛇游戏

    通过写游戏玩编程是一个非常有趣的事,网上用Python写贪吃蛇的代码很多,大部分都用类来写的,比较复杂.今天看到一个非常简洁的贪吃蛇游戏代码,只有60几行,非常适合小白上手,而且思路极其清晰,赶紧分享 ...

最新文章

  1. Go 学习笔记(47)— Go 标准库之 strconv(string/int 互相转换、Parse 字符串转换为指定类型、Format 指定类型格式化为字符串)
  2. css js 兼容问题
  3. html 中如何写js代码提示错误,javascript怎么进行错误处理?
  4. OpenGL 高级GLSL(Advanced GLSL)
  5. m3u8链接地址_FFmpeg下载m3u8视频
  6. 中石油训练赛 - Fermat‘s Optimization Problem(Java高精度运算+二分)
  7. opengl实现经纹理映射的旋转立方体_《图形编程技术学习》(五十三)环境映射...
  8. centos 防火墙
  9. 2019女性开发者报告:3成16岁就会编程、JS/Python成女性掌握最多语言
  10. java 设计模式 示例_Java示例中的装饰器设计模式
  11. 【SimpleITK】胸部CT数据3D space归一化,以及3D plot
  12. linux windows并发模型,LINUX环境并发服务器的三种实现模型
  13. 泛微oa服务器文件,泛微OA根据文档的docid查询文档附件存放的路径
  14. PCB特征阻抗计算工具——Polar SI9000软件下载与安装教程
  15. excel两列数据对比找不同_对比excel,轻松学习python数据分析
  16. Java开发面试常见问题总结
  17. 最新!腾讯优图联合厦门大学发布:2021十大人工智能趋势!无监督/多模态等热点...
  18. 我和CSDN的故事--学无止境
  19. java实现按比例缩放图片技巧
  20. Windows热门的八款绘图软件总有一款是你想要

热门文章

  1. IE6,7,8开发人员工具使用详解下(浏览器模式、文本模式、JavaScript调试、探查器)
  2. 你知道wps可以开启护眼模式吗?
  3. 微信小程序--震动反馈
  4. Lenovo 拯救者15ISK升级BIOS
  5. linux mdadm命令详解
  6. android 组件透明,万能小组件透明小组件-万能小组件透明背景设置v1.0.0 安卓版_永辉资源网...
  7. lol无限乱斗服务器,LOL无线乱斗时间2019
  8. IIS网站部署步骤(通过域名访问)
  9. oracle序列无缓存,oracle 序列跳号现象
  10. Android : CardView的优雅使用