求一个编写的五子棋小游戏python的代码,求借鉴啊!!急急急。。。

Python029

求一个编写的五子棋小游戏python的代码,求借鉴啊!!急急急。。。,第1张

#五子棋import appuifw,e32,key_codes

from graphics import *def cn(x):return x.decode('utf-8')

def quit(): _quit=1

global running

running=1

def redraw(rect): canvas.blit(img)def default():

 global con,color,font

 con={"l":15,"x":15,"y":33,"r":13,"n":15}

 color={"bg":0x7777bb,"fg":0x333333,"p1":0x000000,"p2":0xffffff,"w":0xff0000}

 font=u"Sans MT 936_S60"def initial():

 global img,canvas,con,color,cur_x,cur_y,turn,pos1,pos2,pos

 appuifw.app.screen='full'

 appuifw.app.body=canvas=appuifw.Canvas()

 img=Image.new((240,320))

 img.clear(color["bg"])

 cur_x=7

 cur_y=7

 turn=1

 pos1=[]

 pos2=[]

 pos=[]

 for i in range(con["n"]*con["n"]):

  pos.append(0)def paint_back():

 global img,color,font

 #img.text((90,25),cn('欢乐五子棋'),color["fg"],font)

 for i in range(con["x"],con["x"]+con["l"]*con["n"]-1,con["l"]):

  img.line((i,con["y"],i,con["y"]+con["l"]*(con["n"]-1)),color["fg"])

 for i in range(con["y"],con["y"]+con["l"]*con["n"]-1,con["l"]):

  img.line((con["x"],i,con["x"]+con["l"]*(con["n"]-1),i),color["fg"])

 img.text((40,270),cn('玩家1'),color["p1"],font)

 img.text((160,270),cn('玩家2'),color["p2"],font)

 img.point((90,263),color["p1"],width=con["r"],fill=color["p1"])

 img.point((144,263),color["p2"],width=con["r"],fill=color["p2"])

 

def paint_cur(x,y,sh):

 global img,con,color,pos1,pos2,running

 if running<>1:return

 ax=con["x"]+con["l"]*x

 ay=con["y"]+con["l"]*y

 b=con["l"]/2

 if sh<>0:

  c=color["p"+str(sh)]

  if rp((x,y))<>0:

   c=color["w"]

 if sh==0:

  c=color["bg"]

 img.line((ax-b,ay-2,ax-b,ay-b,ax-2,ay-b),c)

 img.line((ax-b,ay+2,ax-b,ay+b,ax-2,ay+b),c)

 img.line((ax+b,ay-2,ax+b,ay-b,ax+2,ay-b),c)

 img.line((ax+b,ay+2,ax+b,ay+b,ax+2,ay+b),c)

 redraw(())def paint_q(x,y,z):

 global img,con,color

 ax=con["x"]+con["l"]*x

 ay=con["y"]+con["l"]*y

 b=con["l"]/2

 if z==0:

  c=color["bg"]

 else:

  c=color["p"+str(z)]

 img.point((ax,ay),c,width=con["r"],fill=c)

 redraw(())

 if z==0:

  img.line((ax-b,ay,ax+b,ay),c)

  img.line((ax,ay-b,ax,ay+b),c)

  

def k_up():

 global cur_x,cur_y,con,turn

 paint_cur(cur_x,cur_y,0)

 cur_y=cur_y-1

 if cur_y==-1:

  cur_y=con["n"]-1

 paint_cur(cur_x,cur_y,turn)def k_down():

 global cur_x,cur_y,con,turn

 paint_cur(cur_x,cur_y,0)

 cur_y=cur_y+1

 if cur_y==con["n"]:

  cur_y=0

 paint_cur(cur_x,cur_y,turn)def k_left():

 global cur_x,cur_y,con,turn

 paint_cur(cur_x,cur_y,0)

 cur_x=cur_x-1

 if cur_x==-1:

  cur_x=con["n"]-1

 paint_cur(cur_x,cur_y,turn)def k_right():

 global cur_x,cur_y,con,turn

 paint_cur(cur_x,cur_y,0)

 cur_x=cur_x+1

 if cur_x==con["n"]:

  cur_x=0

 paint_cur(cur_x,cur_y,turn)def rp(x):

 global con,pos

 if (x[0]<0 or x[0]>=con["n"] or x[1]<0 or x[1]>=con["n"]):return 0

 #print x,pos[x[0]*con["n"]+x[1]]

 return pos[x[0]*con["n"]+x[1]]def wp(x,y):

 global con,pos

 pos[x[0]*con["n"]+x[1]]=y

  

def win():

 for i in pos1:

  k=0

  for j in range(0,6):

   if rp((i[0]+j,i[1]))==1:

    k=k+1

   else:

    break

  if k>=5:

   return 1

  k=0

  for j in range(0,6):

   if rp((i[0],i[1]+j))==1:

    k=k+1

   else:

    break

  if k>=5:

   return 1

  k=0

  for j in range(0,6):

   if rp((i[0]+j,i[1]+j))==1:

    k=k+1

   else:

    break

  if k>=5:

   return 1

  k=0

  for j in range(0,6):

   if rp((i[0]+j,i[1]-j))==1:

    k=k+1

   else:

    break

  if k>=5:

   return 1 for i in pos2:

  k=0

  for j in range(0,6):

   if rp((i[0]+j,i[1]))==2:

    k=k+1

   else:

    break

  if k>=5:

   return 2

  k=0

  for j in range(0,6):

   if rp((i[0],i[1]+j))==2:

    k=k+1

   else:

    break

  if k>=5:

   return 2

  k=0

  for j in range(0,6):

   if rp((i[0]+j,i[1]+j))==2:

    k=k+1

   else:

    break

  if k>=5:

   return 2

  k=0

  for j in range(0,6):

   if rp((i[0]+j,i[1]-j))==2:

    k=k+1

   else:

    break

  if k>=5:

   return 2

 return 0

 

def k_enter():

 global cur_x,cur_y,turn,pos1,pos2,con,color,font,running

 if running<>1:return

 if rp((cur_x,cur_y))==0:

  if turn==1:

   pos1.append((cur_x,cur_y))

   img.rectangle((35,255,100,272),color["bg"])

   img.rectangle((135,255,200,272),color["p2"])

  if turn==2:

   pos2.append((cur_x,cur_y))

   img.rectangle((35,255,100,272),color["p1"])

   img.rectangle((135,255,200,272),color["bg"])

  paint_q(cur_x,cur_y,turn)

  wp((cur_x,cur_y),turn)

  if win()<>0:

   #img.text((80,300),cn('玩家')+str(turn)+cn("获胜!"),color["fg"],font)

   img.rectangle((35,255,100,272),color["bg"])

   img.rectangle((135,255,200,272),color["bg"])

   paint_cur(cur_x,cur_y,0)

   running=2

 turn=3-turn

 paint_cur(cur_x,cur_y,turn)def bindkey():

 canvas.bind(key_codes.EKeyUpArrow, k_up)

 canvas.bind(key_codes.EKeyDownArrow,k_down)

 canvas.bind(key_codes.EKeyLeftArrow, k_left)

 canvas.bind(key_codes.EKeyRightArrow,k_right)

 canvas.bind(key_codes.EKeySelect,k_enter)default()

initial()

paint_back()

paint_cur(cur_x,cur_y,1)

img.rectangle((35,255,100,272),color["p1"])

bindkey()redraw(())

appuifw.app.exit_key_handler = quit()

_quit=0

while (1-_quit):

 e32.ao_sleep(0.2)

 redraw(())

用Fireworks CS5软件能够制作出漂亮的五子棋黑白棋盘,五子棋黑白棋盘的制作,主要通过网格和克隆效果以及组合路径中接合的使用来进行的。下面就以一个实例来进行说明。

工具/原料

Fireworks CS5

方法/步骤

1/12 分步阅读

新建一文档,大小设定为“240*240”像素,背景色为“白色”;

2/12

选择菜单【视图】|【网格】,打开“显示网格”和“对齐网格”功能;

3/12

选择菜单【视图】|【网格】|【编辑网格】将网格的大小设定位“30*30”;

4/12

在工具箱中选择“矩形”工具,将填充色设置为“无”,边框色设置为“黑色”,描边种类“铅笔”设置为“1像素柔化”

5/12

绘制一个“宽为1格、高为8格”的矩形;

6/12

选择【编辑】|【克隆】,在工具中选择“缩放”工具,将克隆的矩形宽度加大一格;

7/12

重复此操作,直到网格全部被覆盖;

8/12

按快捷键“Ctrl+A”,全选中所有矩形并对其进行克隆;

9/12

选择菜单【修改】|【变形】|【顺时针旋转90°】,将克隆的矩形顺时针旋转90度;

10/12

选择菜单【视图】|【网格】-选择【显示网格】,去掉显示的网格;

11/12

选中所有矩形,选择【修改】|【组合路径】|【接合】;

12/12

将内部填充色填充为“黑色”,五子棋黑白棋盘效果制作完毕。

五子棋