Python-大作业之五子棋游戏(附代码)

Python-大作业之五子棋游戏(附代码)
Python-大作业之五子棋游戏(附代码)

Python 大作业——五子棋游戏

姓名:学号:

姓名:学号:

一游戏介绍:

我们设计的是五子棋游戏,支持两人一个鼠标对下,黑方用左键单击,白方用右键单击,谁先下均可,落子无悔,下过的棋子对方点击后不会变色,程序可自行判断输赢并在五子连珠时弹出结果对话框,游戏双方需遵守不在空地点击和一次下一子的规则。

二游戏代码设计:

代码均为原创,没有借鉴和抄袭,首先是用户GUI界面设计,点击start进入游戏界面,点击quit则退出程序,为了方便判断和记录,我们按从左到右,从上到下的顺序给15x15=225颗棋子编号225,左键绑定函数callback1,点击后可算出它位于哪颗棋子上再画出来黑子,并把对应编号计入record这个列表,之后进入判断函数。右键绑定函数callback2,点击后画出白子,对应编号计入recor这个列表,之后进入判断函数,其中总列表rec的作用是使棋子不被下第二遍。

三作业感想

这个游戏虽然很小但是可以供室友们晚上娱乐之用,我们倾注了很多心血,之前采用模块化编程失败了很多次,有事件响应问题,参数传递问题,到第七个程序才成功,感谢张同珍老师指点了很多,

我们学会了使用类,受益匪浅,对Python产生了浓厚的兴趣。四过程截图

五、实验代码

from Tkinter import *

from tkMessageBox import *

class Game:

def __init__(self):

self.A=[]

self.B=[]

self.record=set()

self.recor=set()

self.rec=self.record|self.recor

self.root=Tk()

self.root.geometry("180x250")

self.root.title("Wu Zi Qi Game")

self.r=Canvas(self.root,width=180,height=210,bg="purple")

pic=PhotoImage(file="beijing.gif")

self.r.create_image(90,100,image=pic)

self.r.place(x=0,y=15)

Label(self.root,text="***Wu Zi Qi Game***",fg="red").place(x=20,y=0)

Button(self.root,text="start",command=self.start).place(x=30,y=230)

Button(self.root,text="quit ",command=self.root.destroy).place(x=100,y=230) self.r.mainloop()

def start(self):

self.root.destroy()

self.top=Tk()

self.top.title("Game Start")

self.c=Canvas(self.top,width=480,height=480,bg="white")

self.c.pack()

self.c.create_rectangle(25,25,455,455,fill="gray")

for i in range(30,451,30):

for j in range(30,451,30):

self.c.create_oval(i-2,j-2,i+2,j+2,fill="blue")

for i in range(1,16):

self.c.create_line(30,30*i,450,30*i)

self.c.create_line(30*i,30,30*i,450)

self.c.create_oval(234,234,246,246,fill="black")

self.c.create_oval(115,115,125,125,fill="black")

self.c.create_oval(355,115,365,125,fill="black")

self.c.create_oval(115,355,125,365,fill="black")

self.c.create_oval(355,355,365,365,fill="black")

self.c.bind("",self.callback1)

self.c.bind("",self.callback2)

self.c.mainloop()

def callback1(self,event):

u,v=event.x,event.y

s=u/15

if s%2==1:

self.x=(s+1)/2

else:

self.x=s/2

l=v/15

if l%2==1:

self.y=(l+1)/2

else:

self.y=l/2

g=(self.y-1)*15+self.x

while g not in self.rec:

self.c.create_oval(self.x*30-12,self.y*30-12,self.x*30+12,self.y*30+12,fill="black") self.A.append(g)

self.record=set(self.A)

self.rec=self.record|self.recor

judge=panduan(g,self.record)

if judge==1:

answer=showinfo("Game over","Black wins!")

self.top.destroy()

def callback2(self,event):

u,v=event.x,event.y

s=u/15

if s%2==1:

self.m=(s+1)/2

else:

self.m=s/2

l=v/15

if l%2==1:

self.n=(l+1)/2

else:

self.n=l/2

k=(self.n-1)*15+self.m

while k not in self.rec:

self.c.create_oval(self.m*30-12,self.n*30-12,self.m*30+12,self.n*30+12,fill="white") self.B.append(k)

self.recor=set(self.B)

self.rec=self.record|self.recor

judge=panduan(k,self.recor)

if judge==1:

answer=showinfo("Game over","White wins!")

self.top.destroy()

def panduan(g,record):

#判断横排是否出现赢的情况

if {g-4,g-3,g-2,g-1}<=record:

return 1

elif {g-3,g-2,g-1,g+1}<=record:

return 1

elif {g-2,g-1,g+1,g+2}<=record:

return 1

elif {g-1,g+1,g+2,g+3}<=record:

return 1

elif {g+1,g+2,g+3,g+4}<=record:

return 1

#判断竖列是否出现赢的情况

elif {g-60,g-45,g-30,g-15}<=record:

return 1

elif {g-45,g-30,g-15,g+15}<=record:

return 1

elif {g-30,g-15,g+15,g+30}<=record:

return 1

elif {g-15,g+15,g+30,g+45}<=record: return 1

elif {g+15,g+30,g+45,g+60}<=record: return 1

#判断\列是否出现赢的情况

elif {g-16,g-32,g-48,g-64}<=record:

return 1

elif {g-48,g-32,g-16,g+16}<=record:

return 1

elif {g-32,g-16,g+16,g+32}<=record:

return 1

elif {g-16,g+16,g+32,g+48}<=record: return 1

elif {g+16,g+32,g+48,g+60}<=record: return 1

#判断/列是否出现赢的情况

elif {g-14,g-28,g-42,g-56}<=record:

return 1

elif {g-14,g-28,g-42,g+14}<=record:

return 1

elif {g-14,g-28,g+14,g+28}<=record:

return 1

elif {g-14,g+14,g+28,g+42}<=record:

elif {g+14,g+28,g+42,g+56}<=record:

return 1

else:

return 0

def main():

print "欢迎来到五子棋战场!黑方用左键,白方用右键,谁先下都可以,落子无悔,不要在棋盘周围空地点击。Are you ready?"

game=Game()

main()

FLASH游戏之贪吃蛇游戏源代码

scorecommand("allowscale", "false"); fscommand("showmenu", "false"); loadedbytes=0; total=_root.getBytesTotal(); loadedbytes=_root.getBytesLoaded() if (loadedbytes==total){nextScene();} else{bfb=int((loadedbytes/total*100))+"%";} stop(); fscommand("allowscale", "false"); fscommand("showmenu", "false"); music=new Sound() music.attachSound("music"); music.stop() music.start(0,10000) musicstart=true onClipEvent(keyDown){ temp=Key.getCode(); if(!keyon){;} else if(game=="stop" and (temp==189 or temp==109)){ if (speed>1) { speed--; rate = speed;}} else if (game=="stop" and (temp==107 or temp==187)) { if (speed"start"){enter(); }else if(temp==Key.ENTER){ enter(); }else if (temp == Key.DOWN and y1>=0) { x1=0; y1 = 1; walk(); timestart() }else if (temp == Key.UP and y1<=0) { x1=0; y1 = -1; walk(); timestart() }else if (temp == Key.LEFT and x1<=0) {

12岁的少年教你用Python做小游戏

你有没有想过电脑游戏是怎样制作出来的?其实它没有你想象的那样复杂!在这个教程里,你要学做一个叫《兔子和獾》的塔防游戏,兔子作为英雄,需要在城堡里抵御獾的进攻。 为了写这个游戏的代码,你将会用Python。好吧,我不是指一条大蟒蛇!Python是一种计算机语言。我们在这篇教程里选择Python是因为这门语言很容易上手,学习起来也很简单和有趣。 如果你是个Python方面的新手,在开始看教程之前你可以看看这本书《Think P ython: How to Think Like a Computer Scientist》。这能让你看教程的时候不那么吃力。 在看了那本书后回到这里并且准备好——兔子和獾之间有一场大战爆发,一起来加入到这场战斗中来吧!

1 2 3 4 Python 2.7.3 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:52:43) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> 注意:如果你想迅速终止Python,你可以输入exit()然后按回车,或者是按Contr ol+D。 现在很迅速的把Python环境配置好了,为了测试下Python是否正常工作,输入print 1+1 然后按回车,应该会打印出2。你刚才就写了一个简单的Python程序!

1 Python 2.7. 2 (default, Jun 20 2012, 16:23:33)

python实现贪吃蛇

Python版贪吃蛇.py #!/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) defdrawgrid(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) defdrawsnake(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 elifself.di == 2: new[0] = (head[0]+1) % self.gridcount elifself.di == 3: new[1] = (head[1]+1) % self.gridcount

用java编写的贪吃蛇游戏代码

用Java编写的贪吃蛇代码 下面是我用java编写的一个贪吃蛇游戏源代码.我个人是比较喜欢玩游戏的,所以学习编程二年多了,很想做个游戏程序,由于能力有限,一直没能做好,后来突然看同学在手机上玩“贪吃蛇”,故想做出来,其一是因为此游戏界面容易设计,算法也比较简单,今天我就把我程序的代码和算法介绍一下,顺便把程序界面皮肤设计说一下...... 程序中一个关于游戏信息的类如下,由于类的说明在程序中写的很清楚了,就不再多解释了:#include "time.h" //方向定义 const CPoint UP(CPoint(0,-1)); const CPoint DOWN(CPoint(0,1)); const CPoint LEFT(CPoint(-1,0)); const CPoint RIGHT(CPoint(1,0)); //速度快慢定义 const int HIGH = 75; const int NORMAL = 180; const int SLOW = 300; const int MAX = 80; //表示转向数 const int LENGTH = 10; class GameMsg { public: GameMsg(void) : m_icon(0)

{ InitGame(); } void InitGame(int up = VK_UP, int down = VK_DOWN, int left = VK_LEFT, int right = VK_RIGHT) { srand((unsigned)time(NULL)); m_gameSpeed = NORMAL; m_speedNum = 2; m_snakeNum = 4; for(int i=0; i

汇编语言写的贪吃蛇小游戏源代码

DATA SEGMENT dw 0,0 snk db 1 blk db 32 food db 3 tal1 db 4 tal2 db 2 adrs db 5 len db ? pst db ? addrs dw ? frow db ? fcol db ? hwrt db ? gmov db 'game over press r to restart press q to quit $' score1 db 'score :$' score2 db ? score0 db 1 zero db 48 writer db 'Developer: Geniusdot $' email db ': geniusdotgmail.$' msg1 db 'The way to play the game:$' way db ' press w to up ,press s to down,press a to left,press d to right$' msg db 'Press any key(except a,s,d,w) to start$' DATA ENDS STACK SEGMENT stack db 200 dup(0) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK start: mov ax,data mov ds,ax mov ax,0 mov es,ax mov frow,10 mov fcol,6 mov dh,10 mov dl,26 mov ah,2

int 10h mov ah,9 lea dx,msg1 int 21h mov dh,11 mov dl,7 mov ah,2 mov bh,0 int 10h mov ah,9 lea dx,way int 21h mov dh,12 mov dl,20 mov ah,2 mov bh,0 int 10h mov ah,9 lea dx,msg int 21h mov ah,0 int 16h mov ah,6 mov al,0 mov ch,0 mov cl,0 mov dh,24 mov dl,79 mov bh,10 int 10h mov dh,0 mov dl,0 mov ah,2 mov bh,0 int 10h mov ah,9 lea dx,score1 int 21h mov dl,15 mov ah,2 mov bh,0 int 10h

Python-大作业之五子棋游戏(附代码)

Python 大作业——五子棋游戏 姓名:学号: 姓名:学号: 一游戏介绍: 我们设计的是五子棋游戏,支持两人一个鼠标对下,黑方用左键单击,白方用右键单击,谁先下均可,落子无悔,下过的棋子对方点击后不会变色,程序可自行判断输赢并在五子连珠时弹出结果对话框,游戏双方需遵守不在空地点击和一次下一子的规则。 二游戏代码设计: 代码均为原创,没有借鉴和抄袭,首先是用户GUI界面设计,点击start进入游戏界面,点击quit则退出程序,为了方便判断和记录,我们按从左到右,从上到下的顺序给15x15=225颗棋子编号225,左键绑定函数callback1,点击后可算出它位于哪颗棋子上再画出来黑子,并把对应编号计入record这个列表,之后进入判断函数。右键绑定函数callback2,点击后画出白子,对应编号计入recor这个列表,之后进入判断函数,其中总列表rec的作用是使棋子不被下第二遍。 三作业感想 这个游戏虽然很小但是可以供室友们晚上娱乐之用,我们倾注了很多心血,之前采用模块化编程失败了很多次,有事件响应问题,参数传递问题,到第七个程序才成功,感谢张同珍老师指点了很多,

我们学会了使用类,受益匪浅,对Python产生了浓厚的兴趣。四过程截图 五、实验代码 from Tkinter import * from tkMessageBox import * class Game: def __init__(self): self.A=[] self.B=[] self.record=set()

self.recor=set() self.rec=self.record|self.recor self.root=Tk() self.root.geometry("180x250") self.root.title("Wu Zi Qi Game") self.r=Canvas(self.root,width=180,height=210,bg="purple") pic=PhotoImage(file="beijing.gif") self.r.create_image(90,100,image=pic) self.r.place(x=0,y=15) Label(self.root,text="***Wu Zi Qi Game***",fg="red").place(x=20,y=0) Button(self.root,text="start",command=self.start).place(x=30,y=230) Button(self.root,text="quit ",command=self.root.destroy).place(x=100,y=230) self.r.mainloop() def start(self): self.root.destroy() self.top=Tk() self.top.title("Game Start") self.c=Canvas(self.top,width=480,height=480,bg="white") self.c.pack() self.c.create_rectangle(25,25,455,455,fill="gray") for i in range(30,451,30): for j in range(30,451,30): self.c.create_oval(i-2,j-2,i+2,j+2,fill="blue") for i in range(1,16): self.c.create_line(30,30*i,450,30*i) self.c.create_line(30*i,30,30*i,450) self.c.create_oval(234,234,246,246,fill="black") self.c.create_oval(115,115,125,125,fill="black") self.c.create_oval(355,115,365,125,fill="black") self.c.create_oval(115,355,125,365,fill="black") self.c.create_oval(355,355,365,365,fill="black") self.c.bind("",self.callback1) self.c.bind("",self.callback2) self.c.mainloop() def callback1(self,event): u,v=event.x,event.y s=u/15 if s%2==1: self.x=(s+1)/2 else: self.x=s/2

VC实现贪吃蛇的实验报告

题目:利用VC++实现贪吃蛇小游戏

一、题目:利用VC++实现贪吃蛇小游戏 利用VC++实现的贪吃蛇小游戏更加注重可视化。一条蛇在封闭的围墙内,在围墙内会随机出现一个食物,通过键盘上的W S A D四个键控制它向上,下,左,右四个方向移动。当蛇头撞到食物时表示将食物吃掉,这时蛇身增长一节,得分加一。接着随机生成食物,等待被蛇吃掉。如果在移动过程中撞到墙壁或者自己的身体,则游戏结束。游戏过程中,可以在菜单中选择暂停或者结束游戏,对游戏进行暂停或者退出。

二、编程要点(或基本思路、算法分析与说明): 本次游戏设计包含两大模块,一个模块是贪吃蛇游戏本身算法的设计,完成了贪吃蛇的食物产生,获取食物,蛇的移动等功能。另一个模块是利用MFC完成贪吃蛇的可视化显示,产生了一个对话框,在对话框可以控制游戏及游戏的显示。 1.贪吃蛇游戏算法设计包括: <1>果实出现的设计思路: (1)采用随机数生成果实出现坐标 (2)判断当前生成的果实是否在贪吃蛇身体范围内。 (3)如果在,重新生成直到不在为止。如果不在,则把坐标位置返回给调用对象。 <2>贪吃蛇更新的算法设计 (1)接收玩家按下的方向键消息,并保存到方向变量中。 (2)定义一个时间定时器,用来控制蛇运动的速度。 (3)当每次时间间隔到达时,则根据方向变量来更新贪吃蛇curr(即贪吃蛇身体)向量。 (4)判断curr向量的第一个元素中的坐标数据是否碰到边界或者蛇身,如果有,则游戏结束。否则,进行下一步。 (5)判断curr向量的第一个元素中的坐标数据是否与当前果实重合,如果有,表示贪吃蛇已经吃到果实。这时就向贪吃蛇curr向量添加一个元素,并重新生成一个果实。 (6)吃到食物后,得分会同步增加。 2.利用MFC完成贪吃蛇的可视化显示: 首先初始对话框,完成游戏的整体框架的显示。然后游戏玩家在菜单栏里选择开始,暂停,结束等,控制游戏状态。游戏开始后,玩家通过键盘上的消息控制蛇的运动。在函数DrawSnake(CDC *pDC,Snake snake),和DrawFood(CDC *pDC,SnakeFood f)完成对蛇和食物的重绘,从而显示出蛇的运动和对食物的获取。在OnPaint()函数中完成得分和游戏操作提示的显示。 本次游戏设计的主要功能函数如下: OnGameStart()(游戏开始函数), OnGamePauseStart()(游戏暂停函

贪吃蛇游戏开发与实现

南京晓庄学院 手机游戏开发技术报告 贪吃蛇游戏开发与实现 所在院(系): 数学与信息技术学院 学号:XXXXXXX 学生姓名:XX 年级专业: 08计算机科学与技术 指导教师: XXX 提交日期: 2011 年 11 月

第一章、开发平台与技术概述 (5) 1.1开发环境 (5) 1.2 WTK、ECLIPSE与JAM的介绍 (5) (1)WTK (5) (2)Eclipse (5) 1.3 JA V A语言介绍 (6) (1)面向对象 (6) (2)平台无关性 (6) (3)分布式 (6) (4)可靠性和安全性 (6) (5)多线程 (6) 第二章J2ME及其体系结构概述 (7) 2.2体系结构 (7) 2.3 移动信息设备简表概述 (7) 第三章手机游戏开发过程 (9) 3.2 详细设计 (9) 3.2.1 代码设计 (10) 第四章程序的调试与运行 (14) 4.2 游戏的运行环境 (16) 第五章总结 (17) 致谢 (18) 参考文献 (19)

摘要 随着通信技术的发展和手机的普及,手机游戏的开发技术越来越为人们所关注。以J2ME为开发平台,利用Java提供强大工具,不但可以在手机上实现静态HTML技术所无法实现的计算处理、数据存储、与服务器的通信等功能,而且能够开发各种手机游戏。本文在介绍J2ME及其体系结构的基础上,以贪吃蛇游戏为实例,描述了借助J2ME的MIDlet类库开发手机游戏的过程。 本次论文重点在于J2ME技术的应用,通过对手机游戏开发和MIDP 2.0的研究,开发了一款操作简单,并有一定可玩性的手机空中射击游戏。在游戏中玩家可以通过手机的方向键控制己方飞机的移动,己方飞机自动发射子弹。敌方飞机按照预定程序移动并自动发射子弹。当我方飞机发射子弹打中敌方飞机,敌方飞机爆炸,同理,敌方飞机发射子弹打中我方飞机时我方飞机爆炸。当双方飞机相撞时都爆炸。 关键词J2ME,手机游戏,MIDP,SPRITE,永久性数据

贪吃蛇游戏实现思路及源代码

HTML5 贪吃蛇游戏实现思路及源代码 点评:游戏难点是怎么模拟贪吃蛇的移动。如果只是一个方块的话显然很简单。但是当蛇的长度变长之后要怎么样控制,下面为大家简要介绍下具体的实现,感兴趣的朋友可以参考下,希望对大家有所帮助 游戏操作说明 通过方向键控制贪吃蛇上下左右移动。贪吃蛇吃到食物之后会变长一个长度。 游戏具体实现 游戏难点是怎么模拟贪吃蛇的移动。如果只是一个方块的话显然很简单。但是当蛇的长度变长之后要怎么样控制 每个方块的移动呢? 如果观察蛇的移动,可以发现,从蛇的头部到尾部,每个方块在下一时刻的位置就是它的前一个方块在当前时刻 的位置。因此我们需要做的只是控制贪吃蛇的头部的运动。其他部分的位置都可以依次类推。 另外一个值得注意的问题是 贪吃蛇吃下食物之后,新增加的方块应该放在哪个位置。 答案就是在下一时刻,新增加的方块应该出现在当前时刻的尾部位置。 因此,在吃下食物之后应该在更新蛇的每个位置之前,增加一个方块,并且将其位置设定在当前时刻的尾部位置。 然后在当前时刻更新出了新增方块之外的所有方块的位置 index.html snake.js 复制代码代码如下: var canvas; var ctx; var timer; //measures var x_cnt = 15; var y_cnt = 15;

var unit = 48; var box_x = 0; var box_y = 0; var box_width = 15 * unit; var box_height = 15 * unit; var bound_left = box_x; var bound_right = box_x + box_width; var bound_up = box_y; var bound_down = box_y + box_height; //images var image_sprite; //objects var snake; var food; var food_x; var food_y; //functions function Role(sx, sy, sw, sh, direction, status, speed, image, flag) { this.x = sx; this.y = sy; this.w = sw; this.h = sh; this.direction = direction; this.status = status; this.speed = speed; this.image = image; this.flag = flag; } function transfer(keyCode) { switch (keyCode) { case 37: return 1; case 38: return 3; case 39: return 2; case 40: return 0; } } function addFood()

使用Python编写一个贪吃蛇

import random import pygame import sys from pygame.locals import * from os import system system("pause") Snakespeed = 7 Window_Width = 800 Window_Height = 500 Cell_Size = 20# Width and height of the cells # Ensuring that the cells fit perfectly in the window. eg if cell size was # 10 and window width or windowheight were 15 only 1.5 cells would # fit. assert Window_Width % Cell_Size == 0, "Window width must be a multiple of cell size." # Ensuring that only whole integer number of cells fit perfectly in the window. assert Window_Height % Cell_Size == 0, "Window height must be a multipl e of cell size." Cell_W = int(Window_Width / Cell_Size) # Cell Width Cell_H = int(Window_Height / Cell_Size) # Cellc Height White = (255, 255, 255) Black = (0, 0, 0) Red = (255, 0, 0) # Defining element colors for the program. Green = (0, 255, 0) DARKGreen = (0, 155, 0) DARKGRAY = (40, 40, 40) YELLOW = (255, 255, 0) Red_DARK = (150, 0, 0) BLUE = (0, 0, 255) BLUE_DARK = (0, 0, 150) BGCOLOR = Black # Background color UP = 'up' DOWN = 'down'# Defining keyboard keys. LEFT = 'left'

贪吃蛇小游戏源代码

#include #include #include #include int head=3 ,tail=0; int main() { int i,j,k=0; int zuobiao[2][80]; long start; int direction=77; int gamespeed; int timeover; int change(char qipan[20][80],int zuobiao[2][80],char direction); zuobiao[0][tail]=1;zuobiao[1][tail]=1;zuobiao[0][1]=1;zuobiao[1][1]=2;zuobiao[0][2]=1;zuobiao[ 1][2]=3;zuobiao[0][head]=1;zuobiao[1][head]=4; /*处理棋盘*/ char qipan[20][80];//定义棋盘 for(i=0;i<20;i++) for(j=0;j<80;j++) qipan[i][j]=' ';//初始化棋盘 for(i=0;i<80;i++) qipan[0][i]='_'; for(i=0;i<20;i++) qipan[i][0]='|'; for(i=0;i<20;i++) qipan[i][79]='|'; for(i=0;i<80;i++) qipan[19][i]='_'; qipan[1][1]=qipan[1][2]=qipan[1][3]='*';//初始化蛇的位置 qipan[1][4]='#'; printf("This is a game of a SNAKE.\nGOOD LUCK TO YOU !\n"); printf("Input your game speed,please.(e.g.300)\n"); scanf("%d",&gamespeed); while(direction!='q') { system("cls"); for(i=0;i<20;i++)//打印出棋盘 for(j=0;j<80;j++) printf("%c",qipan[i][j]); timeover=1;

贪吃蛇游戏安卓源代码

附录1.SnakeView类 package com.example.android_snake.view; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.Timer; import java.util.TimerTask; import com.example.android_snake.R; import com.example.android_snake.food.Food; import com.example.android_snake.snake.Body; import com.example.android_snake.snake.Head; import com.example.android_snake.snake.Snake; import com.example.android_snake.snake.SnakeDirection; import com.example.android_snake.stone.Stone; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.os.Handler; import android.util.DisplayMetrics; import android.view.Display; import android.view.MotionEvent; import android.view.View; import android.view.ViewManager; import android.view.WindowManager; import android.widget.Toast; public class SnakeView extends View { private Context context; private Bitmap headBitmap; private Bitmap bodyBitmap; private Bitmap foodBitmap; private Bitmap stoneBitmap; // 屏幕的高度和宽度 private int screenHeight; private int screenWidth; // 每个小格子的高度和宽度 private int eachHeight;

少儿编程分享:手把手教你用Python编写战斗机游戏(一)

游戏分享:手把手教你用Python编写 战斗机游戏 2018.1.23 游戏制作 今天我们要分享的是战斗机游戏!在这个游戏中,飞机(游戏主角)需要躲避迎面飞来的炮弹(敌人)。 下面让我们一起来看一下如何编写这个小游戏吧! 初始设置 首先,创建一个新的.py文件然后置入下面的代码: import pygame from pygame.locals import* pygame.init() 和其他所有python程序一样,我们要首先导入(import)我们所要使用的模块(module)。在今天这个例子里,我们要导入pygame以及pygame.locals,以用于后面的内容。最后一行pygame.init()将所有的PyGame模块初始化,在我们正式开始写PyGame的“正文内容”之前,都要先加上这一行。 屏幕对象 首先,我们需要为所有的物体创建一个画布窗口,我们把这个变量叫做screen。为了创建这个变量,我们需要调用pygame.display下的set_mode()方法(method),并向set_mode()传递一个元组(tuple)来表示窗口的高和宽(在这里我们设置一个高800宽600的窗口)。 import pygame

from pygame.locals import* pygame.init() screen=pygame.display.set_mode((800,600)) 现在,如果你运行程序,你将会看到一个窗口突然出现,并在我们退出程序时马上消失。看来我们已经成功创建了画布!在下一部分,我们将加入游戏的main循环,这样我们就能确保只有我们输入正确的退出命令时,程序才会退出。 游戏循环 游戏的主循环内包含了所有要发生的事件。当我们玩游戏时,这段程序一直在运行。它能够不断更新游戏的状态,渲染游戏屏幕效果,并且收集玩家输入的指令。除了让主循环在游戏进行中不断执行,我们也需要让循环在我们退出程序时停止。因而,我们需要引入一些相应的指令,让程序能够在这些指令输入(input)时作出相应的反应。所有输入的指令(以及之后一些其他的事件)都会进入PyGame 的事件队列中,我们可以通过pygame.event.get()来得到这些事件。这个命令会返回队列中的事件列表,在游戏中,程序将对这些事件进行循环,并且根据事件的类别作出相应的反应。在下一段代码中,我们要处理的是KEYDOWN和QUIT事件: #用于让主循环不断运行的变量 running=True #主循环 while running: #针对事件队列的for循环 for event in pygame.event.get(): #检测是否有KEYDOWN事件,KEYDOWN是一个在pygame.locals中定义了的事件常量,这个库我们之前导入过 if event.type==KEYDOWN: #如果按了ESC键,把running的值设为False,并退出主循环 if event.key==K_ESCAPE: running=False #检测是否有QUIT事件,如果有的话,把running的值设为Flase elif event.type==QUIT:

python实现贪吃蛇

# encoding:utf-8 importtkMessageBox fromTkinter import Tk, Canvas, Frame from random import randint import sys class Grid: def __init__(self, master = None, window_width = 500, window_height = 500, grid_width = 25): self.width = grid_width self.bg = 7 self.start = 2 # 50 / 25 self.end = 18 # 450 / 25 self.color = ['yellow', 'red', 'pink', 'black', 'orange', 'green', 'purple', 'cyan'] self.canvas = Canvas(master, width = window_width, height = window_height, bg = self.color[self.bg])

self.draw_wall() self.canvas.pack() defdraw_rect(self, x, y, clr): self.canvas.create_rectangle(x, y, x + self.width, y + self.width, fill = self.color[clr], outline = self.color[self.bg]) defdraw_wall(self): w = self.width s = self.start * w e = self.end * w fori in range(s, e, w): self.canvas.create_rectangle(i, s, i + w, s + w, fill = 'green', outline = self.color[self.bg]) self.canvas.create_rectangle(i, e - w, i + w, e, fill = 'green', outline = self.color[self.bg]) self.canvas.create_rectangle(s, i, s + w, i + w, fill = 'green', outline = self.color[self.bg]) self.canvas.create_rectangle(e - w, i, e, i + w, fill = 'green', outline = self.color[self.bg]) classsnakenode: def __init__(self, clr, x, y): self.clr = clr self.x = x self.y = y class Food: def __init__(self, Grid): self.grid = Grid self.set_food() defset_food(self): min = self.grid.start + 1 max = self.grid.end - 2 self.x = randint(min, max) * 25 self.y = randint(min, max) * 25 self.clr = randint(0, len(self.grid.color) - 2) def display(self): self.grid.draw_rect(self.x, self.y, self.clr) class snake: def __init__(self, Grid): self.grid = Grid self.init_snake() self.direction = 'Up' self.dir_x = [0, 0, -1, 1]

Python 俄罗斯方块游戏

【Python】用Python实现一个俄罗斯方块游戏 俄罗斯方块游戏,使用Python实现,总共有350+行代码,实现了俄罗斯方块游戏的基本功能,同时会记录所花费时间,消去的总行数,所得的总分,还包括一个排行榜,可以查看最高记录。 排行榜中包含一系列的统计功能,如单位时间消去的行数,单位时间得分等。 附源码: from Tkinter import* from tkMessageBox import* import random import time #俄罗斯方块界面的高度 HEIGHT=18 #俄罗斯方块界面的宽度 WIDTH=10 ACTIVE=1 PASSIVE=0 TRUE=1 FALSE=0 root=Tk();root.title('Russia') class App(Frame): def__init__(self,master): Frame.__init__(self) master.bind('',self.Up) master.bind('',self.Left) master.bind('',self.Right) master.bind('',self.Down) #master.bind('',self.Space) master.bind('',self.Space) master.bind('',self.Play) master.bind('',self.Pause) self.backg="#%02x%02x%02x"%(120,150,30) self.frontg="#%02x%02x%02x"%(40,120,150) self.nextg="#%02x%02x%02x"%(150,100,100) self.flashg="#%02x%02x%02x"%(210,130,100) self.LineDisplay=Label(master,text='Lines:',bg='black',fg='red') self.Line=Label(master,text='0',bg='black',fg='red') self.ScoreDisplay=Label(master,text='Score:',bg='black',fg='red') self.Score=Label(master,text='0',bg='black',fg='red') #Display time self.SpendTimeDisplay=Label(master,text='Time:',bg='black',fg='red') self.SpendTime=Label(master,text='0.0',bg='black',fg='red') self.LineDisplay.grid(row=HEIGHT-2,column=WIDTH,columnspan=2)

少儿编程分享:手把手教你用Python编写贪吃蛇(五)

游戏分享:手把手教你用Python编写 贪吃蛇(五) 2018.1.14 游戏代码还是挺长的 更多素材可以在码趣学院公众号(maquxueyuan)留言领取 确定苹果出现的位置 163. def getRandomLocation(): 164. return {'x': random.randint(0, CELLWIDTH - 1), 'y': random.randint(0, CELLHEIGHT - 1)} 当我们需要一个新苹果出现,我们就需要调用getRandomLocation()函数。这个函数将返回一个存有横纵坐标x、y的字典,x、y的值是由random.randint 随机产生的。 游戏结束界面 167. def showGameOverScreen(): 168. gameOverFont = pygame.font.Font('freesansbold.ttf', 150) 169. gameSurf = gameOverFont.render('Game', True, WHITE) 170. overSurf = gameOverFont.render('Over', True, WHITE) 171. gameRect = gameSurf.get_rect() 172. overRect = overSurf.get_rect() 173. gameRect.midtop = (WINDOWWIDTH / 2, 10)

25) 175. 176. DISPLAYSURF.blit(gameSurf, gameRect) 177. DISPLAYSURF.blit(overSurf, overRect) 178. drawPressKeyMsg() 179. pygame.display.update() 游戏结束界面和游戏开始界面相似,只不过游戏结束界面不是动画。我们用两个Surf对象分别放置“Game”和“Over”两个单词。 180. pygame.time.wait(500) 181. checkForKeyPress() # 清除事件队列中按下键盘度事件 182. 183. while True: 184. if checkForKeyPress(): 185. pygame.event.get() # 清除事件队列 186. return “Game Over”会一直显示在屏幕上,直到玩家按下任意键。为了防止玩家太早 (很可能是不小心)按下键盘,我们在第180行使用pygame.time.wait()添加 半秒的等待时间。在这半秒内,按下键盘也不会退出游戏结束界面从而重新开始游戏。(括号内的参数500代表500毫秒,即0.5秒)。这是为了类似这样的情况 发生:比如玩家在最后关头试着避开屏幕的边缘,但是由于按键太晚导致小蛇撞死。如果是这样的话,玩家很可能是在showGameOverScreen()被调用后才按下的键,而这时按下的键会导致退出游戏界面并且重新开始游戏。

相关文档
最新文档