日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python连连看小游戏_python实现连连看游戏

發布時間:2024/7/5 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python连连看小游戏_python实现连连看游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編程一直是在課余時間,放假時間自學,到現在為止也有半年了。

這是我自己用python實現的連連看,也是第一個完成的游戲,雖然極其簡陋。

思路呢,一開始是想要從一個點出發開始尋路,遇到數字就換一條路,直到找到第二個點,但是這樣就得做到不斷尋路且不能和重復之前走過的路徑,這就有點讓我犯難了,想了很久也沒想出解決辦法,后來去網上參考了大神們的想法:

輸入的兩個坐標(x1,y1)(x2,y2),分別尋找兩個點周圍的空白點,空白點的坐標保存在數組a1,a2中,如果a1,a2有重合的點,那么就說明可以用一條直線連接。

如果沒有重合的點,那就以其中一個數組a1中的點為坐標,繼續尋找該坐標周圍的空白點,保存為另一個數組a3,之后比較a2和a3,如果有重合的,就說明可以用兩條直線連接,否則兩個點不能連接。

然后再把兩個坐標相鄰的情況考慮進去就差不多了。

import random

import math

#建一個隨機列表,作為地圖的元素

list1 = []

for i in range(0,50):

r = random.randint(0,9)

list1.append(r)

list1.append(r)

random.shuffle(list1) #打亂

#建地圖

map1 = []

map2 = []

list2 = []

for i in range(0,10):

map1 += [0]

for i in range(0,100,10):

k = int(i/10)

map2 = list1[i:i+10]

map1[k] = map2

for i in range(0,10):

list2.append("")

map1.insert(0,list2)

map1.append(list2)

for i in range(0,12):

map1[i].insert(0,"")

map1[i].append("")

#map1為10*10的地圖,序號從1~10,最外面一圈是""

r =l =u =d =1

go1 = 1

go2 = 1

go3 = 1

list1 = []

list2 = []

mylist1 = []

mylist2 = []

#尋找點(x1,y1)附近的空白點,并將坐標存入列表list1

def judgepoint(x1,y1):

global list1,list2,map1,r,l,u,d

list1 = []

list2 = []

r = l = u = d = 1

for i in range(1,12):

if (x1+i)<=11:

if (map1[x1+i][y1] == "")&(d == 1):

list2 = [x1+i,y1]

list1.append(list2)

else:

d = 0

else:

d = 0

for i in range(1,12):

if (x1-i)>=0:

if (map1[x1-i][y1] == "")&(u == 1):

list2 = [x1-i,y1]

list1.append(list2)

else:

u = 0

else:

u = 0

for i in range(1,12):

if (y1+i)<=11:

if (map1[x1][y1+i] == "")&(r == 1):

list2 = [x1,y1+i]

list1.append(list2)

else:

r = 0

else:

r = 0

for i in range(1,12):

if (y1-i)>=0:

if (map1[x1][y1-i] == "")&(l == 1):

list2 = [x1,y1-i]

list1.append(list2)

else:

l = 0

else:

l = 0

for i in range(12):

print(map1[i])

while(count < 50):

x1 = input("請輸入坐標x1:")

y1 = input("請輸入坐標y1:")

x2 = input("請輸入坐標x2:")

y2 = input("請輸入坐標y2:")

x1 = int(x1)

y1 = int(y1)

x2 = int(x2)

y2 = int(y2)

go1 = 1#表示用一條直線即可完成連接

go2 = 1#表示用兩條

go3 = 1#用三條

if map1[x1][y1] == map1[x2][y2]: #先判斷輸入的兩個坐標對應的值是否相等

if (x1 <= 11)&(x1 >=0)&(y1 >= 0)&(y1 <= 11):

if go1 == 1: #一條直線的情況

if (int(math.fabs(x1-x2)) == 1)&(y1 == y2):

map1[x1][y1]=map1[x2][y2]=""

go2 = go3 = 0

if (int(math.fabs(y1-y2)) == 1)&(x1 == x2):

map1[x1][y1]=map1[x2][y2]=""

count += 1

go2 = go3 = 0

if go2 == 1: #兩條直線的情況

judgepoint(x1,y1)

list3 = list1

judgepoint(x2,y2)

for i in range(len(list1)):

for k in range(len(list3)):

if (i <= (len(list1)-1))&(k <= (len(list3)-1)):

if list1[i]==list3[k]:

map1[x1][y1]=map1[x2][y2]=""

count += 1

go3 = 0

break

if go3 == 1: #三條直線的情況

judgepoint(x1,y1)

list3 = list1

judgepoint(x2,y2)

list4 = list1

mylist1 = []

#以點(x1,y1)周圍空白點為坐標進行第二次尋找空白點

for i in range(len(list3)):

judgepoint(list3[i][0],list3[i][1])

mylist1 += list1

#遍歷列表,與點(x2,y2)形成的列表進行比較,尋找交叉點

for i in range(len(mylist1)):

for k in range(len(list4)):

if (i <= (len(mylist1)-1))&(k <= (len(list4)-1)):

if mylist1[i]==list4[k]:

map1[x1][y1]=map1[x2][y2]=""

count += 1

mylist1 = []

break

for i in range(12):

print(map1[i])

else:

print("越界了")

else:

print("不對哦")

if (count==50):

print("YOU WIN!!!")

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

總結

以上是生活随笔為你收集整理的python连连看小游戏_python实现连连看游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。