首页 > 代码库 > 根据之前的博文,我把给同学做的三子棋小游戏的代码发出来,只是界面很丑很丑,AI算法很笨很笨,过几天我传到网盘上,提供大家下载娱乐

根据之前的博文,我把给同学做的三子棋小游戏的代码发出来,只是界面很丑很丑,AI算法很笨很笨,过几天我传到网盘上,提供大家下载娱乐

  1 background_image_filename = blackground.png  2 black_mouse_image_filename = black.png  3 white_mouse_image_filename = white.png  4 restart_icon_filename=restart.png  5 pingju_icon_filename=pingju.jpg  6 win_icon_filename=win.jpg  7 lose_icon_filename=lose.jpg  8   9 import pygame 10 import time 11 import sys 12  13 from pygame.locals import * 14 from sys import exit 15  16 HIGHLIGHTCOLOR = (255,255,255) 17  18 def AI(pp): 19     #status is now white and black key in the board 20     #taozi = white 21     #computer = black 22  23     num = 0 24     x = 0 25     y = 0 26  27     if pp[1][1]==none: 28         return 4 29  30      31     for i in range(0,3): 32         for j in range(0,3): 33             if pp[i][j]==none: 34                 pp[i][j]=white 35                 cnt=0 36                  37                 tx=i 38                 ty=j 39                 while tx>=0 and tx<3 and ty>=0 and ty<3 and pp[tx][ty]==white: 40                     cnt=cnt+1 41                     tx=tx+1 42                 tx=i 43                 ty=j 44                 while tx>=0 and tx<3 and ty>=0 and ty<3 and pp[tx][ty]==white: 45                     cnt=cnt+1 46                     tx=tx-1 47  48                 if cnt > num: 49                     num = cnt 50                     x=i 51                     y=j 52  53                 cnt=0 54                 tx=i 55                 ty=j 56                 while tx>=0 and tx<3 and ty>=0 and ty<3 and pp[tx][ty]==white: 57                     cnt=cnt+1 58                     ty=ty+1 59                 tx=i 60                 ty=j 61                 while tx>=0 and tx<3 and ty>=0 and ty<3 and pp[tx][ty]==white: 62                     cnt=cnt+1 63                     ty=ty-1 64  65                 if cnt > num: 66                     num = cnt 67                     x=i 68                     y=j 69  70                 cnt=0 71                 tx=i 72                 ty=j 73                 while tx>=0 and tx<3 and ty>=0 and ty<3 and pp[tx][ty]==white: 74                     cnt=cnt+1 75                     tx=tx+1 76                     ty=ty+1 77                 tx=i 78                 ty=j 79                 while tx>=0 and tx<3 and ty>=0 and ty<3 and pp[tx][ty]==white: 80                     cnt=cnt+1 81                     tx=tx-1 82                     ty=ty-1 83  84                 if cnt > num: 85                     num = cnt 86                     x=i 87                     y=j 88  89                 cnt=0 90                 tx=i 91                 ty=j 92                 while tx>=0 and tx<3 and ty>=0 and ty<3 and pp[tx][ty]==white: 93                     cnt=cnt+1 94                     tx=tx+1 95                     ty=ty-1 96                 tx=i 97                 ty=j 98                 while tx>=0 and tx<3 and ty>=0 and ty<3 and pp[tx][ty]==white: 99                     cnt=cnt+1100                     tx=tx-1101                     ty=ty+1102 103                 if cnt > num:104                     num = cnt105                     x=i106                     y=j107 108 109                 pp[i][j]=none110                     111 112     113     return x*3+y114 115 def main():116     117     pygame.init()118     screen = pygame.display.set_mode((800,500),0,32)119     pygame.display.set_caption("you can never win!")120     background = pygame.image.load(background_image_filename).convert()121     mouse_cursor = pygame.image.load(white_mouse_image_filename).convert_alpha()122 123     124     white_sign = pygame.image.load(white_mouse_image_filename).convert_alpha()125     restart    = pygame.image.load(restart_icon_filename).convert_alpha()126     pingju     = pygame.image.load(pingju_icon_filename).convert_alpha()127     winicon    = pygame.image.load(win_icon_filename).convert_alpha()128     lose       = pygame.image.load(lose_icon_filename).convert_alpha()129 130     131     132     black_sign = pygame.image.load(black_mouse_image_filename).convert_alpha()133     position=[ [27,11,93,68,0],[240,6,304,60,1],[476,4,525,42,2],[24,206,80,265,3],[246,212,292,257,4],[477,212,528,258,5],[26,440,73,479,6],[244,435,292,478,7],[475,435,527,480,8] ]134     positionMid=[ [48-26,24-24],[269-26,24-24],[500-26,24-24],[48-26,233-24],[269-26,234-24],[500-26,234-24],[48-26,459-24],[269-26,460-24],[500-26,460-24] ]135     positionColor=[ none,none,none,none,none,none,none,none,none]136 137     whoIsTurn = [computer,taozi]138     turnKey   = 1   # 1 means taozi139                     # 0 means computer140     cnt = 0141     pp=[ [none,none,none],142          [none,none,none],[none,none,none]]143     #pp = [ [144     win=0145     while 1:146         newx =0147         newy =0148     149         color = white150         color1 = black151         color2 = none152         for event in pygame.event.get():153             if event.type == QUIT:154                 pygame.quit()155                 sys.exit()156             elif event.type == MOUSEBUTTONDOWN :157                 newx,newy = pygame.mouse.get_pos()158                 for i in position:159                     if (newx>=i[0] and newx <= i[2]) and (newy >= i[1] and newy <= i[3]):160                         j = i[4]161                         if positionColor[j]!=none:162                             continue163                         positionColor[j]= color164                         #positionColor[j+1]= color165                         for ii in range(0,3):166                             for jj in range(0,3):167                                 pp[ii][jj]=positionColor[ii*3+jj]168 169                         # AI begin170 171                         res = AI( pp )172                         positionColor[res]=color1173 174                         # AI finished175                         176                         cnt=cnt+1177                 if newx>=674 and newx<=774 and newy>=396 and newy<= 496:178                     for i in range(0,3):179                         for j in range(0,3):180                             positionColor[i*3+j]=none181                             pp[i][j]=none182                             win=0183                    184         screen.blit(background,(0,0))185         screen.blit(restart,(674,396))186         #x,y = pygame.mouse.get_pos()187         #x -= mouse_cursor.get_width()/2188         #y -= mouse_cursor.get_height()/2189         #if win==0:190         #    screen.blit(mouse_cursor,(x,y))191 192         #x,y = pygame.mouse.get_pos()193         for i in position:194             x,y = pygame.mouse.get_pos()195             if (x>=i[0] and x <= i[2]) and (y >= i[1] and y <= i[3]):196                 x-=26197                 y-=26198                 if positionColor[ int(i[4]) ]==none:199                 #pygame.draw.rect(screen,HIGHLIGHTCOLOR,(x,y,52,52),0)200                     screen.blit(mouse_cursor,(x,y))201                     print("done it")202                 else:203                     print("color= ",positionColor[i[4]])204 205                         206         for ii in [0,1,2,3,4,5,6,7,8]:207             if positionColor[ii] != none:208                 if positionColor[ii] == white:209                     #print("write white_sign")210                     screen.blit(white_sign,positionMid[ii] )211                 else :212                     #print("write black_sign")213                     screen.blit(black_sign,positionMid[ii])214         215 216         for i in range(0,3):217             for j in range(0,3):218                 pp[i][j]=positionColor[i*3+j]219 220 221     222         for i in range(0,3):223             if pp[i][0]==pp[i][1] and pp[i][0]==pp[i][2] and pp[i][0]!=none:224                 win=1225                 winner=pp[i][0]226             if pp[0][i]==pp[1][i] and pp[0][i]==pp[2][i] and pp[0][i]!=none:227                 win=1228                 winner=pp[0][i]229         if pp[0][0]==pp[1][1] and pp[0][0]==pp[2][2] and pp[0][0]!=none:230             win=1231             winner=pp[0][0]232         if pp[2][0]==pp[1][1] and pp[1][1] == pp[0][2] and pp[1][1]!=none:233             win =1234             winner=pp[1][1]235         if win==0:236             cntcolor=0237             for i in range(0,3):238                 for j in range(0,3):239                     if pp[i][j]!=none:240                         cntcolor=cntcolor+1241             if cntcolor==9 :242                 win =1243                 winner=pingju244 245         if win==1 :246             #print("someone win!")247             if winner==white:248                 screen.blit(winicon,(50,20))249             elif winner==pingju:250                 screen.blit(pingju,(100,100))251             else:252                 screen.blit(lose,(100,100))253             #print("winner = ",winner)254             #time.sleep(10000)255                 256 257         258         pygame.display.update()259 260 261 262 if __name__ == __main__:263     main()