酷站(www.ku0.com)-致力于为互联网从业者提供动力!

热门关键词:  企业  as  baidu  c4rp3nt3r  美女
酷站

【云小站】新老客都返现+现金红包+瓜分60万奖池
酷站

python

旗下栏目: vbs hta htc perl DOS/BAT python VBA ColdFusion autoit PowerShell seraphzone linux shell Lua Golang Erlang ruby 游戏 远程脚本

python实现连连看游戏的代码

来源:互联网搜集 作者:秩名 人气: 发布时间:2020-02-14
本篇文章主要介绍了python实现连连看游戏的代码,对大家的学习或者工作具有一定的参考学习价值,感兴趣的小伙伴们可以参考一下,也感谢大家对酷站(ku0.com)的支持。

编程一直是在课余时间,放假时间自学,到现在为止也有半年了。

这是我自己用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!!!")

版权声明:本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 959677720#qq.cn(#换@) 举报,一经查实,本站将立刻删除。
原文链接:https://blog.csdn.net/qq_45571428/article/details/104283133?request_id=&utm_source=distribute.pc_category.none-task

相关文章

  • Python代码实现免费发送手机短信推送消息功能

    Python代码实现免费发送手机短信推送消息功能

    实现的功能: 通过代码定时给手机推送短信,短信内容可以自定义文字,当然你也可以去别的网站爬取每日心灵鸡汤,天气预报或其它信息进行推送。关于爬取数据可以参考:Python40行代码实现天气预报和每日鸡汤推送 本文主要讲如何实现发送短......
    02-27
  • Python代码实现天气预报和每日鸡汤推送功能

    Python代码实现天气预报和每日鸡汤推送功能

    情人节刚过去几天,但是这和我们程序员有什么关系呢,对我们来说,万物皆对象。但是啊,小编为了讨得仰慕已久的女神的欢心(真香),便用python爬取了爱词霸网站的每日一句和天气预报网站的天气预报,并且每天定时将内容推送到女神的手机......
    02-27
  • python json递归打印所有json子节点信息

    python json递归打印所有json子节点信息

    直接上代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 def json_txt( self , dic_json): #self.debug_print(json_txt) if isinstance (dic_json, dict ): # 判断是否是字典类型isinstance 返回True false for key in dic_json: #dic_j......
    02-27
  • python使用递归实现打印一个数字的每一位

    python使用递归实现打印一个数字的每一位

    代码如下: def func(n): # 从高分为开始打印 lengh = len(str(n)) # 确定数字的长度 x = 10**(lengh-1) # 确定数字的分位 if n 10: print(n) else: print(int(n/x)) func(n % x) # 对n的x分位取余得到 def func1(n): # 从低分位开始打印......
    02-27
  • python实现提取str字符串/json中多级目录下的某个值的方法

    python实现提取str字符串/json中多级目录下的某个值的方法

    字符串多级目录取值: 比如说: 你response接收到的数据是这样的。 你现在只需要取到itemstring 这个字段下的值。其他的都不要! 思路就是: 字符串是个json格式(或转为json格式),然后str转为字典dict,然后循环遍历按照key来取值。 ......
    02-27
  • python使用递归回溯完美解决八皇后的问题

    python使用递归回溯完美解决八皇后的问题

    八皇后问题描述:在一个88的棋盘上,任意摆放8个棋子,要求任意两个棋子不能在同一行,同一列,同一斜线上,问有多少种解法。 规则分析: 任意两个棋子不能在同一行比较好办,设置一个队列,队列里的每个元素代表一行,就能达到要求 任意......
    02-26
  • 基于Python数据结构之递归与回溯搜索

    基于Python数据结构之递归与回溯搜索

    目录 1. 递归函数与回溯深搜的基础知识 2. 求子集 (LeetCode 78) 3. 求子集2 (LeetCode 90) 4. 组合数之和(LeetCode 39,40) 5. 生成括号(LeetCode 22) 6. N皇后(LeetCode 51,52) 7. 火柴棍摆正方形(LeetCode 473) 1. 递归函数与回溯深......
    02-26
  • 深度学习入门之Pytorch数据增强的实现

    深度学习入门之Pytorch数据增强的实现

    数据增强 卷积神经网络非常容易出现过拟合的问题,而数据增强的方法是对抗过拟合问题的一个重要方法。 2012 年 AlexNet 在 ImageNet 上大获全胜,图片增强方法功不可没,因为有了图片增强,使得训练的数据集比实际数据集多了很多新样本,......
    02-26
  • Python基于Dlib的人脸识别系统的实现方法

    Python基于Dlib的人脸识别系统的实现方法

    之前已经介绍过人脸识别的基础概念,以及基于opencv的实现方式,今天,我们使用dlib来提取128维的人脸嵌入,并使用k临近值方法来实现人脸识别。 人脸识别系统的实现流程与之前是一样的,只是这里我们借助了dlib和face_recognition这两个......
    02-26
  • python实现可下载音乐的音乐播放器的代码

    python实现可下载音乐的音乐播放器的代码

    1.确定页面 SongSheet------ 显示歌单 MusicCtrl ------显示音乐一些控件(播放,跳转,音量调节) SearchWindows ------搜索栏(搜索歌曲默认显示20条,可下载) songSheet.py #!/usr/bin/env python# -*- coding:utf-8 -*-# @Author: Minions#......
    02-25

最新更新