展开全部

#!/usr/bin/python

from Tkinter import *

import random

class snake(Frame):

def __init__(self, master=None):

Frame.__init__(self, master)

self.body = [(0,0)]

self.bodyid = []

self.food = [ -1, -1 ]

self.foodid = -1

self.gridcount = 10

self.size = 500

self.di = 3

self.speed = 500

self.top = self.winfo_toplevel()

self.top.resizable(False, False)

self.grid()

self.canvas = Canvas(self)

self.canvas.grid()

self.canvas.config(width=self.size, height=self.size,relief=RIDGE)

self.drawgrid()

s = self.size/self.gridcount

id = self.canvas.create_rectangle(self.body[0][0]*s,self.body[0][1]*s,

(self.body[0][0]+1)*s, (self.body[0][1]+1)*s, fill="yellow")

self.bodyid.insert(0, id)

self.bind_all("", self.keyrelease)

self.drawfood()

self.after(self.speed, self.drawsnake)

def drawgrid(self):

s = self.size/self.gridcount

for i in range(0, self.gridcount+1):

self.canvas.create_line(i*s, 0, i*s, self.size)

self.canvas.create_line(0, i*s, self.size, i*s)

def drawsnake(self):

s = self.size/self.gridcount

head = self.body[0]

new = [head[0], head[1]]

if self.di == 1:

new[1] = (head[1]-1) % self.gridcount

elif self.di == 2:

new[0] = (head[0]+1) % self.gridcount

elif self.di == 3:

new[1] = (head[1]+1) % self.gridcount

else:

new[0] = (head[0]-1) % self.gridcount

next = ( new[0], new[1] )

if next in self.body:

exit()

elif next == (self.food[0], self.food[1]):

self.body.insert(0, next)

self.bodyid.insert(0, self.foodid)

self.drawfood()

else:

tail = self.body.pop()

id = self.bodyid.pop()

self.canvas.move(id, (next[0]-tail[0])*s, (next[1]-tail[1])*s)

self.body.insert(0, next)

self.bodyid.insert(0, id)

self.after(self.speed, self.drawsnake)

def drawfood(self):

s = self.size/self.gridcount

x = random.randrange(0, self.gridcount)

y = random.randrange(0, self.gridcount)

while (x, y) in self.body:

x = random.randrange(0, self.gridcount)

y = random.randrange(0, self.gridcount)

id = self.canvas.create_rectangle(x*s,y*s, (x+1)*s, (y+1)*s, fill="yellow")

self.food[0] = x

self.food[1] = y

self.foodid = id

def keyrelease(self, event):

if event.keysym == "Up" and self.di != 3:

self.di = 1

elif event.keysym == "Right" and self.di !=4:

self.di = 2

elif event.keysym == "Down" and self.di != 1:

self.di = 3

elif event.keysym == "Left" and self.di != 2:

self.di = 4

app = snake()

app.master.title("Greedy Snake")

app.mainloop()

贪食蛇e69da5e887aa62616964757a686964616f31333332616461

python连连看小游戏_请用PYTHON编一个小游戏,如五子棋,连连看,贪吃蛇,扫雷,计算器等等...相关推荐

  1. python判断列表维度_如何输出python中list的维度

    python中输出list的维度可以使用numpy来实现:import numpy as np a = [[1,2],[3,4]] print(np.array(a).shape) 扩展: resha ...

  2. 什么是python全栈开发_什么是python全栈

    全栈即指的是全栈工程师,指掌握多种技能,并能利用多种技能独立完成产品的人.就是与这项技能有关的都会,都能够独立的完成. 全栈只是个概念,也分很多种类.真正的全栈工程师涵盖了web开发.DBA .爬虫 ...

  3. 全国计算机python考试难吗_计算机二级python考试难吗

    全国计算机等级考试于2018年9月新增计算机二级Python程序设计考试科目,从上次考试情况来看,考试难度不大,特别是考试内容也比较少,所以通过率高达54%(其它科目在30%以下). 那么二级Pyth ...

  4. 请设计、构造一个小程序,能够帮助用户查询食物的GI值,帮助用户选择健康的饮食。GI值的保存方式由设计者自行选择。GI:血糖指数

    现代人很注重饮食与健康间的关系,食物的选择往往要注意热量.血糖生成指数(GI)等,保证饮食健康. **请设计.构造一个小程序,能够帮助用户查询食物的GI值,帮助用户选择健康的饮食.GI值的保存方式由设 ...

  5. 微信小程序实现跳转到另外一个小程序的方法

    微信小程序实现跳转到另外一个小程序的方法 1,首先需要在当前小程序app.json中定义:需要跳转的小程序的app-id app.josn "navigateToMiniProgramApp ...

  6. 小福利,turtle库画了一个小风车

    小福利,turtle库画了一个小风车 import turtle as tt.pencolor('blue') list1=['red','green','pink','yellow']for i i ...

  7. python编的俄罗斯方块游戏_手把手制作Python小游戏:俄罗斯方块(一)

    手把手制作Python小游戏:俄罗斯方块1 大家好,新手第一次写文章,请多多指教 A.准备工作: 这里我们运用的是Pygame库,因为Python没有内置,所以需要下载 如果没有pygame,可以到官 ...

  8. python爬取小游戏_如何用Python爬取小游戏网站,把喜欢的游戏收藏起来(附源码)...

    简介: Python 是一门简单易学且功能强大的编程语言,无需繁琐的配置,掌握基本语法,了解基本库函数,就可以通过调用海量的现有工具包编写自己的程序,轻松实现批量自动化操作,可以极大提高办公和学习效率 ...

  9. 利用python做一个小游戏_如何使用python做一个简单的猜数字的小游戏

    1 首先小编先打开IDLE,如下图: 2 然后这里点击菜单栏的'File',然后点击菜单"New File",如下图: 3 然后我们就在idle中新建了一个python文件,如下图 ...

最新文章

  1. oracle打印乘法口诀,ORACLE中实现输出乘法口诀
  2. 固定顶部指定div不滑动
  3. 随机森林分类器_建立您的第一个随机森林分类器
  4. [Angularjs]锚点操作服务$anchorScroll
  5. 知识图谱最新权威综述论文解读:知识图谱补全部分
  6. jq处理返回来json_4个小窍门,让你在Python中高效使用JSON
  7. ArcEngine中多边形内外环的处理(转)
  8. 用java网络编程中的TCP方式上传文本文件及出现的小问题
  9. C# mvc4.0 MD5测试
  10. Spring自定义注解(验证身份证+性别+地区)
  11. H3CIE网络工程师成长之路
  12. 高德地图3D离线定位
  13. 2019年程序员薪资报告,网友:年薪20万只是起薪?
  14. 如何使用SpanReporter接口生成链路数据
  15. 邮件中的抄送和密送的区别
  16. Android 应用市场大全 主流市场
  17. 20172302 《Java软件结构与数据结构》第五周学习总结
  18. html网页的框架标记分别有,新手入门前端,应该知道HTML框架排版标记标签大全...
  19. 无线通信sip服务器常用品牌,一种无线Mesh网中多SIP服务器布局方法
  20. 白银之手服务器人物不显示,白银之手 - 萌娘百科 万物皆可萌的百科全书

热门文章

  1. Redis 05_List列表 数组 Hash散列
  2. leetcode 435. Non-overlapping Intervals | 435. 无重叠区间(单调栈)
  3. mac安装brew失败怎么办?
  4. netty系列之:自定义编码解码器
  5. rateLimiter令牌桶限流算法
  6. wpf加载上千张图片部分图片不显示_开源WPF控件库MaterialDesignInXAML推荐
  7. 【详细注释】1051 Pop Sequence (25 分)
  8. 1034 Head of a Gang (30 分) One way that the police finds the head of a gang is to check people‘s pho
  9. 【最新合集】编译原理习题(含答案)_15运行存储分配_MOOC慕课 哈工大陈鄞
  10. ArrayList方法源码