成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python怎么實(shí)現(xiàn)迷宮?生成代碼是什么

89542767 / 540人閱讀


  小編寫這篇文章的主要目的,是給大家去做一個(gè)相關(guān)的介紹,介紹一下關(guān)于其怎么才能夠?qū)崿F(xiàn)python迷宮,那么,我們要使用的話,就要去生成代碼了,那么,具體的代碼有嗎?下面就給大家做一個(gè)解答。


  作為一項(xiàng)古老的智力游戲,千百年來迷宮都散發(fā)著迷人的魅力。但是,手工設(shè)計(jì)迷宮費(fèi)時(shí)又耗(腦)力,于是,我們有必要制作一個(gè)程序:迷宮生成器……


  好吧,我編不下去了。但是,從上面的文字中,我們可以看出,我們此次的主題是:用Python實(shí)現(xiàn)一個(gè)迷宮生成器。


  首先展示一下效果圖:

01.png

  我們先分析一下所需的庫:


  既然是生成器,每次生成的迷宮一模一樣顯然是說不過去的。因此,我們不可避免地要使用隨機(jī)數(shù)(Random庫)。迷宮一定是要繪制的,所以需要有一個(gè)GUI庫或繪圖庫,這里我使用Pygame(Tkinter或Turtle其實(shí)都可以做到,但畢竟Pygame比較順手)。與Pygame搭配,Sys似乎也是需要的(用于退出程序,但其實(shí)不使用似乎也無傷大雅)。然后是Tkinter.filedialog,主要用于詢問保存路徑(生成的迷宮總得保存吧)。當(dāng)然,用Time加一個(gè)計(jì)時(shí)器似乎是錦上添花。


  于是,就有:


  #coding:utf-8
  import contextlib
  with contextlib.redirect_stdout(None):
  import pygame
  import random
  import sys
  import time
  from tkinter.filedialog import*


  這里要說明的是,由于導(dǎo)入Pygame時(shí)會(huì)輸出版本信息等很多內(nèi)容(這很影響美感),我們需要使用Contextlib阻止它輸出。


  接下來,我們需要詢問一些參數(shù):


  a=int(input("列數(shù):"))
  b=int(input("行數(shù):"))
  l=int(input("大?。?quot;))
  saveit=input("是否保存:")


  然后,就要運(yùn)行生成迷宮的程序了。同時(shí),我們有必要計(jì)錄一下時(shí)間(相當(dāng)于開啟計(jì)時(shí)器):


  print("生成中...")
  e=time.time()


  然后就是正式生成迷宮。在介紹這部分代碼之前,我們需要了解一下算法:


  第一步,生成一個(gè)由迷宮單元(白格)和墻(黑格)組成的網(wǎng)格。一行中迷宮單元的數(shù)量為迷宮的列數(shù),一列找迷宮單元的數(shù)量為迷宮的行數(shù)。令左上角的迷宮單元為起點(diǎn),右下角的迷宮單元為終點(diǎn),打破起點(diǎn)左邊與終點(diǎn)右邊的墻,如圖所示:

02.png

  第二步,訪問各迷宮單元。將起點(diǎn)標(biāo)記為當(dāng)前迷宮單元,當(dāng)存在未被訪問的迷宮單元(凡是曾經(jīng)成為過當(dāng)前迷宮單元的迷宮單元,都視為已訪問)時(shí),重復(fù)執(zhí)行:


  將周圍的未被訪問的迷宮單元加入表格;


  如果表格中有迷宮單元:


  將當(dāng)前迷宮單元入棧(可以理解為將其加入一個(gè)叫做棧的表格);


  從表格中隨機(jī)選擇一個(gè)迷宮單元;


  打破當(dāng)前迷宮單元與選擇的迷宮單元之間的墻;


  將選擇的迷宮單元標(biāo)記為當(dāng)前迷宮單元;


  如果表格中沒有迷宮單元:


  棧頂迷宮單元出棧(可以理解為將棧中的最后一個(gè)元素獲取并刪除);


  將出棧的迷宮單元設(shè)為當(dāng)前迷宮單元;


  在循環(huán)結(jié)束以后,就會(huì)出現(xiàn)像文章開頭效果圖一樣的結(jié)果。


  接下來,我們就要將文字化的算法轉(zhuǎn)化為Python的代碼。


  首先,程序是不認(rèn)識(shí)圖片的,它認(rèn)識(shí)的是數(shù)據(jù)。所以我們需要設(shè)置一個(gè)二維列表,以此來用一串?dāng)?shù)據(jù)表示當(dāng)前的圖像。當(dāng)然,我們可以順便將第一步的設(shè)置一起完成:


  alist=[]
  aa=0
  need=[]
  for j in range(2*a+1):
  if aa==0:
  aa=1
  alistone=[]
  for i in range(2*b+1):
  alistone.append(1)
  alist.append(alistone)
  else:
  aa=0
  alistone=[]
  bb=0
  for i in range(2*b+1):
  if bb==0:
  bb=1
  alistone.append(1)
  else:
  bb=0
  need.append((j,i))
  alistone.append(0)
  alist.append(alistone)
  alist[0][1]=0
  alist[-1][-2]=0


  可以看到,除此以外我們還建立了一個(gè)列表need,里面存儲(chǔ)了所有的迷宮單元。它的作用就是判斷迷宮單元是否被訪問,每次訪問都會(huì)將迷宮單元從表格中刪除,當(dāng)表格中沒有迷宮單元時(shí),就說明所有迷宮單元都被訪問了。


  x=1
  y=1
  need.remove((1,1))
  listing=[]
  while len(need)>0:
  aroundit=[]
  try:
  if x-2<0:
  print(1+"1")
  alist[x-2][y]=0
  if(x-2,y)in need:
  aroundit.append("alist[x-1][y],x=(0,x-2)")
  except:
  while False:
  print()
  try:
  alist[x+2][y]=0
  if(x+2,y)in need:
  aroundit.append("alist[x+1][y],x=(0,x+2)")
  except:
  while False:
  print()
  try:
  alist[x][y+2]=0
  if(x,y+2)in need:
  aroundit.append("alist[x][y+1],y=(0,y+2)")
  except:
  while False:
  print()
  try:
  if y-2<0:
  print(1+"1")
  alist[x][y-2]=0
  if(x,y-2)in need:
  aroundit.append("alist[x][y-1],y=(0,y-2)")
  except:
  while False:
  print()
  if len(aroundit)>0:
  listing.append((x,y))
  exec(random.choice(aroundit))
  need.remove((x,y))
  else:
  x,y=listing[-1]
  listing.pop()


  而這些內(nèi)容,就是第二步。其算法我已經(jīng)解釋過,唯一一個(gè)微小的不同是,在此處我們并沒有在列表中加入相鄰迷宮單元的坐標(biāo),而是將其對(duì)應(yīng)的破墻和標(biāo)記為當(dāng)前迷宮單元的代碼以字符串的形式存儲(chǔ)在表格中,并在隨機(jī)選擇出某個(gè)迷宮單元所對(duì)應(yīng)的字符串后,使用exec將其轉(zhuǎn)換為代碼并運(yùn)行(這可以節(jié)省一些代碼)。

  print("完成!用時(shí){}秒".format(time.time()-e))


  打印完生成迷宮的用時(shí)后,我們需要將表格中的數(shù)據(jù)轉(zhuǎn)化為圖像了。當(dāng)然,在此之前,我們要先確定圖片保存的位置。


  if saveit=="1":
  ccc=askdirectory()
  h=""
  bbbbb=1
  while True:
  try:
  open("{}/{}×{}迷宮{}.png".format(ccc,a,b,h),"r")
  h="({})".format(bbbbb)
  except:
  break
  bbbbb+=1

  由于使用時(shí)有可能選擇不保存圖片,因此要先判斷你的選擇是保存還是不保存。這里字符“1”表示保存(輸入其他,自然就是不保存了)。然后我們需要讓你選擇保存路徑(askdirectory()詢問的是文件路徑,不需要選擇文件名)。然后,我們要確定文件名稱:“a×b迷宮.png”。這里需要判斷指定路徑是否存在此名稱的文件,如果存在,則我們需要在后面加上序號(hào)。總而言之,通過這串代碼,我們已經(jīng)將迷宮的路徑+文件名確定了。


  pygame.init()
  icon=pygame.image.load("迷宮.png")
  pygame.display.set_icon(icon)
  screen=pygame.display.Info()
  screen=pygame.display.set_mode((l*(2*a+1),l*(2*b+1)))
  pygame.display.set_caption('迷宮')
  screen.fill("white")
  c=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  c.fill(color='white')
  d=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  d.fill(color='black')
  for i in range(2*a+1):
  for j in range(2*b+1):
  if alist<i>[j]==0:
  screen.blit(c,(i*l,j*l))
  elif alist<i>[j]==1:
  screen.blit(d,(i*l,j*l))
  pygame.display.flip()
  if saveit=="1":
  pygame.image.save(screen,"{}/{}×{}迷宮{}.png".format(ccc,a,b,h))
  while True:
  for event in pygame.event.get():
  if event.type==pygame.QUIT:
  pygame.quit()
  sys.exit()


  代碼中使用的圖片“迷宮.png”(名稱不太對(duì),下載以后要重新命名一下):

04.png

  這里主要是Pygame的基本設(shè)置,并將表格內(nèi)容圖像化。每一個(gè)數(shù)字代表一個(gè)方塊,而數(shù)字的值則決定了方塊的顏色,數(shù)字在表格中的位置決定了方塊的位置。就這樣,我們呢將表格完全轉(zhuǎn)化成了圖像。當(dāng)然,我們還需要用pygame.image.save()函數(shù)將圖像保存為圖片文件。


  這樣,這個(gè)生成器似乎完成了。


  它運(yùn)行良好,但當(dāng)迷宮比較復(fù)雜時(shí),暴露出一個(gè)問題(下圖是100×100的迷宮):

05.png

  由于正確路徑過于曲折,在復(fù)雜度較高時(shí),這個(gè)迷宮的難度會(huì)變得極高!


  難度高,在某方面上講,的確是好事。但當(dāng)你向你的朋友們展示這個(gè)迷宮時(shí),如果你自己也無法得出正確的路徑,這不是很掃興嗎?


  因此,一個(gè)尋路算法變得非常有必要。


  尋路算法的大體思路:


  在生成的迷宮中,白格為路,黑格為墻。將起點(diǎn)設(shè)置為當(dāng)前位置,重復(fù)執(zhí)行直到終點(diǎn)成為當(dāng)前位置:


  將當(dāng)前位置標(biāo)記為正確路徑;


  將周圍未標(biāo)記的路加入一個(gè)表格;


  如果表格不空:


  將當(dāng)前位置入棧;


  從表格中隨機(jī)選擇一條路,并將其設(shè)為當(dāng)前位置;


  如果表格是空的:


  棧頂?shù)穆烦鰲#?/p>


  將其設(shè)為當(dāng)前位置;


  通過這個(gè)算法,我們可以試出正確的路徑(如圖):

06.png

  代碼的實(shí)現(xiàn):


  x2=0
  y2=1
  listing2=[]
  while not(alist[-1][-2]==2):
  alist[x2][y2]=3
  around2=[]
  try:
  if x2-1&lt;0:
  print(1+"1")
  if alist[x2-1][y2]==0:
  around2.append("x2=x2-1")
  except:
  while False:
  print()
  try:
  if alist[x2+1][y2]==0:
  around2.append("x2=x2+1")
  except:
  while False:
  print()
  try:
  if alist[x2][y2+1]==0:
  around2.append("y2=y2+1")
  except:
  while False:
  print()
  try:
  if y2-1&lt;0:
  print(1+"1")
  if alist[x2][y2-1]==0:
  around2.append("y2=y2-1")
  except:
  while False:
  print()
  if len(around2)&gt;0:
  listing2.append((x2,y2))
  exec(random.choice(around2))
  else:
  alist[x2][y2]=2
  x2,y2=listing2[-1]
  listing2.pop()
  alist[-1][-2]=3
  for i in range(len(alist)):
  for j in range(len(alist[0])):
  if alist<i>[j]==2:
  alist<i>[j]=0

  同時(shí),圖像繪制的過程也要作出一些改動(dòng),以顯示正確路徑:


  if saveit=="1":
  ccc=askdirectory()
  h=""
  bbbbb=1
  while True:
  try:
  open("{}/{}×{}迷宮{}.png".format(ccc,a,b,h),"r")
  open("{}/{}×{}迷宮(正確線路){}.png".format(ccc,a,b,h),"r")
  h="({})".format(bbbbb)
  except:
  break
  bbbbb+=1
  pygame.init()
  icon=pygame.image.load("迷宮.png")
  pygame.display.set_icon(icon)
  screen=pygame.display.Info()
  screen=pygame.display.set_mode((l*(2*a+1),l*(2*b+1)))
  pygame.display.set_caption('迷宮')
  screen.fill("white")
  if saveit=="1":
  c=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  c.fill(color='white')
  d=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  d.fill(color='black')
  f=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  f.fill(color='white')
  for i in range(2*a+1):
  for j in range(2*b+1):
  if alist<i>[j]==0:
  screen.blit(c,(i*l,j*l))
  elif alist<i>[j]==1:
  screen.blit(d,(i*l,j*l))
  else:
  screen.blit(f,(i*l,j*l))
  pygame.image.save(screen,"{}/{}×{}迷宮{}.png".format(ccc,a,b,h))
  c=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  c.fill(color='white')
  d=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  d.fill(color='black')
  f=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  f.fill(color='red')
  for i in range(2*a+1):
  for j in range(2*b+1):
  if alist<i>[j]==0:
  screen.blit(c,(i*l,j*l))
  elif alist<i>[j]==1:
  screen.blit(d,(i*l,j*l))
  else:
  screen.blit(f,(i*l,j*l))
  pygame.image.save(screen,"{}/{}×{}迷宮(正確線路){}.png".format(ccc,a,b,h))
  c=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  c.fill(color='white')
  d=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  d.fill(color='black')
  f=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  f.fill(color='white')
  for i in range(2*a+1):
  for j in range(2*b+1):
  if alist<i>[j]==0:
  screen.blit(c,(i*l,j*l))
  elif alist<i>[j]==1:
  screen.blit(d,(i*l,j*l))
  else:
  screen.blit(f,(i*l,j*l))
  pygame.display.flip()
  aaaaaaa=0
  while True:
  for event in pygame.event.get():
  if event.type==pygame.QUIT:
  pygame.quit()
  sys.exit()
  if event.type==pygame.MOUSEBUTTONDOWN:
  if aaaaaaa==1:
  aaaaaaa=0
  c=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  c.fill(color='white')
  d=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  d.fill(color='black')
  f=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  f.fill(color='white')
  for i in range(2*a+1):
  for j in range(2*b+1):
  if alist<i>[j]==0:
  screen.blit(c,(i*l,j*l))
  elif alist<i>[j]==1:
  screen.blit(d,(i*l,j*l))
  else:
  screen.blit(f,(i*l,j*l))
  pygame.display.flip()
  else:
  aaaaaaa=1
  c=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  c.fill(color='white')
  d=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  d.fill(color='black')
  f=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  f.fill(color='red')
  for i in range(2*a+1):
  for j in range(2*b+1):
  if alist<i>[j]==0:
  screen.blit(c,(i*l,j*l))
  elif alist<i>[j]==1:
  screen.blit(d,(i*l,j*l))
  else:
  screen.blit(f,(i*l,j*l))
  pygame.display.flip()

  通過這些改動(dòng),顯示正確路徑的效果就實(shí)現(xiàn)了。生成完成以后,窗口上顯示的是沒有正確路徑的迷宮,而點(diǎn)擊窗口后,正確的路徑就會(huì)顯示(再次點(diǎn)擊隱藏)。


  剛剛那張100×100的迷宮,其正確路徑是:

07.png

  可以看出,本文中所用的算法生成的迷宮,其正確路徑還是非常曲折的(難度很高)。你何不將其發(fā)給你的朋友,讓其破解一下呢?


  完整的代碼:


  #coding:utf-8
  import contextlib
  with contextlib.redirect_stdout(None):
  import pygame
  import random
  import sys
  import time
  from tkinter.filedialog import*
  a=int(input("列數(shù):"))
  b=int(input("行數(shù):"))
  l=int(input("大?。?quot;))
  saveit=input("是否保存:")
  print("生成中...")
  e=time.time()
  alist=[]
  aa=0
  need=[]
  for j in range(2*a+1):
  if aa==0:
  aa=1
  alistone=[]
  for i in range(2*b+1):
  alistone.append(1)
  alist.append(alistone)
  else:
  aa=0
  alistone=[]
  bb=0
  for i in range(2*b+1):
  if bb==0:
  bb=1
  alistone.append(1)
  else:
  bb=0
  need.append((j,i))
  alistone.append(0)
  alist.append(alistone)
  alist[0][1]=0
  alist[-1][-2]=0
  x=1
  y=1
  need.remove((1,1))
  listing=[]
  while len(need)&gt;0:
  aroundit=[]
  try:
  if x-2&lt;0:
  print(1+"1")
  alist[x-2][y]=0
  if(x-2,y)in need:
  aroundit.append("alist[x-1][y],x=(0,x-2)")
  except:
  while False:
  print()
  try:
  alist[x+2][y]=0
  if(x+2,y)in need:
  aroundit.append("alist[x+1][y],x=(0,x+2)")
  except:
  while False:
  print()
  try:
  alist[x][y+2]=0
  if(x,y+2)in need:
  aroundit.append("alist[x][y+1],y=(0,y+2)")
  except:
  while False:
  print()
  try:
  if y-2&lt;0:
  print(1+"1")
  alist[x][y-2]=0
  if(x,y-2)in need:
  aroundit.append("alist[x][y-1],y=(0,y-2)")
  except:
  while False:
  print()
  if len(aroundit)&gt;0:
  listing.append((x,y))
  exec(random.choice(aroundit))
  need.remove((x,y))
  else:
  x,y=listing[-1]
  listing.pop()
  x2=0
  y2=1
  listing2=[]
  while not(alist[-1][-2]==2):
  alist[x2][y2]=3
  around2=[]
  try:
  if x2-1&lt;0:
  print(1+"1")
  if alist[x2-1][y2]==0:
  around2.append("x2=x2-1")
  except:
  while False:
  print()
  try:
  if alist[x2+1][y2]==0:
  around2.append("x2=x2+1")
  except:
  while False:
  print()
  try:
  if alist[x2][y2+1]==0:
  around2.append("y2=y2+1")
  except:
  while False:
  print()
  try:
  if y2-1&lt;0:
  print(1+"1")
  if alist[x2][y2-1]==0:
  around2.append("y2=y2-1")
  except:
  while False:
  print()
  if len(around2)&gt;0:
  listing2.append((x2,y2))
  exec(random.choice(around2))
  else:
  alist[x2][y2]=2
  x2,y2=listing2[-1]
  listing2.pop()
  alist[-1][-2]=3
  for i in range(len(alist)):
  for j in range(len(alist[0])):
  if alist<i>[j]==2:
  alist<i>[j]=0
  print("完成!用時(shí){}秒".format(time.time()-e))
  if saveit=="1":
  ccc=askdirectory()
  h=""
  bbbbb=1
  while True:
  try:
  open("{}/{}×{}迷宮{}.png".format(ccc,a,b,h),"r")
  open("{}/{}×{}迷宮(正確線路){}.png".format(ccc,a,b,h),"r")
  h="({})".format(bbbbb)
  except:
  break
  bbbbb+=1
  pygame.init()
  icon=pygame.image.load("迷宮.png")
  pygame.display.set_icon(icon)
  screen=pygame.display.Info()
  screen=pygame.display.set_mode((l*(2*a+1),l*(2*b+1)))
  pygame.display.set_caption('迷宮')
  screen.fill("white")
  if saveit=="1":
  c=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  c.fill(color='white')
  d=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  d.fill(color='black')
  f=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  f.fill(color='white')
  for i in range(2*a+1):
  for j in range(2*b+1):
  if alist<i>[j]==0:
  screen.blit(c,(i*l,j*l))
  elif alist<i>[j]==1:
  screen.blit(d,(i*l,j*l))
  else:
  screen.blit(f,(i*l,j*l))
  pygame.image.save(screen,"{}/{}×{}迷宮{}.png".format(ccc,a,b,h))
  c=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  c.fill(color='white')
  d=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  d.fill(color='black')
  f=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  f.fill(color='red')
  for i in range(2*a+1):
  for j in range(2*b+1):
  if alist<i>[j]==0:
  screen.blit(c,(i*l,j*l))
  elif alist<i>[j]==1:
  screen.blit(d,(i*l,j*l))
  else:
  screen.blit(f,(i*l,j*l))
  pygame.image.save(screen,"{}/{}×{}迷宮(正確線路){}.png".format(ccc,a,b,h))
  c=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  c.fill(color='white')
  d=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  d.fill(color='black')
  f=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  f.fill(color='white')
  for i in range(2*a+1):
  for j in range(2*b+1):
  if alist<i>[j]==0:
  screen.blit(c,(i*l,j*l))
  elif alist<i>[j]==1:
  screen.blit(d,(i*l,j*l))
  else:
  screen.blit(f,(i*l,j*l))
  pygame.display.flip()
  aaaaaaa=0
  while True:
  for event in pygame.event.get():
  if event.type==pygame.QUIT:
  pygame.quit()
  sys.exit()
  if event.type==pygame.MOUSEBUTTONDOWN:
  if aaaaaaa==1:
  aaaaaaa=0
  c=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  c.fill(color='white')
  d=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  d.fill(color='black')
  f=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  f.fill(color='white')
  for i in range(2*a+1):
  for j in range(2*b+1):
  if alist<i>[j]==0:
  screen.blit(c,(i*l,j*l))
  elif alist<i>[j]==1:
  screen.blit(d,(i*l,j*l))
  else:
  screen.blit(f,(i*l,j*l))
  pygame.display.flip()
  else:
  aaaaaaa=1
  c=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  c.fill(color='white')
  d=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  d.fill(color='black')
  f=pygame.Surface((l,l),flags=pygame.HWSURFACE)
  f.fill(color='red')
  for i in range(2*a+1):
  for j in range(2*b+1):
  if alist<i>[j]==0:
  screen.blit(c,(i*l,j*l))
  elif alist<i>[j]==1:
  screen.blit(d,(i*l,j*l))
  else:
  screen.blit(f,(i*l,j*l))
  pygame.display.flip()


  代碼的結(jié)束,對(duì)于程序也許僅僅只是開始;學(xué)習(xí)的暫時(shí)告一段落,從不影響生活的繼續(xù)。生命無止境,貴在一顆永遠(yuǎn)向上的心。


  至此,小編就給大家介紹完畢了,希望可以給大家?guī)砀嗟膸椭?/p>

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/128009.html

相關(guān)文章

  • 用并查集(find-union)實(shí)現(xiàn)迷宮算法以及最短路徑求解

    摘要:本人郵箱歡迎轉(zhuǎn)載轉(zhuǎn)載請(qǐng)注明網(wǎng)址代碼已經(jīng)全部托管有需要的同學(xué)自行下載引言迷宮對(duì)于大家都不會(huì)陌生那么迷宮是怎么生成已經(jīng)迷宮要如何找到正確的路徑呢用代碼又怎么實(shí)現(xiàn)帶著這些問題我們繼續(xù)往下看并查集朋友圈有一種算法就做并查集什么意思呢比如現(xiàn)在有零 本人郵箱: 歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明網(wǎng)址 http://blog.csdn.net/tianshi_kcogithub: https://github.c...

    xiangchaobin 評(píng)論0 收藏0
  • 一篇文章把本該屬于你的源碼天賦還給你

    摘要:一些方法不應(yīng)該這樣不應(yīng)該漫無目的地隨手拿起一分源碼,試圖去通讀。應(yīng)該這樣精心挑選要閱讀的源碼項(xiàng)目。這最好是與你的編程語言你的工作內(nèi)容你的興趣所在相關(guān)的,這樣才能更切實(shí)地感受到閱讀源碼給你帶來的益處,更有動(dòng)力繼續(xù)。 showImg(https://segmentfault.com/img/bVbcvmm?w=785&h=525); 怎么閱讀源碼 沒有經(jīng)驗(yàn)的技術(shù)差底子薄的初級(jí)程序員,如何閱...

    chanjarster 評(píng)論0 收藏0
  • 快速實(shí)現(xiàn)一個(gè)簡(jiǎn)單的canvas迷宮游戲

    摘要:所以我先寫了一個(gè)樣例扔在服務(wù)器上,大家可以先體驗(yàn)一下效果用成就感作為驅(qū)動(dòng)力哈哈哈點(diǎn)我體驗(yàn)地址正文實(shí)現(xiàn)這個(gè)小游戲也不難,讓我們想想,一個(gè)迷宮游戲有哪些基本要素。迷宮地圖的生成,可以借助谷歌的一個(gè)迷宮在線生成器來獲得。 前言 (最近設(shè)計(jì)模式看的有點(diǎn)頭大,一直面對(duì)純js實(shí)在是有些枯燥-_-。所以寫一點(diǎn)有趣的東西調(diào)劑一下)現(xiàn)在canvas已經(jīng)不算新鮮了,不過由于日常業(yè)務(wù)中并不常用,所以實(shí)踐并不...

    wangdai 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<