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

这是我自己用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实现连连看游戏相关推荐

  1. python可视化窗口制作一个摇骰子游戏_python摇骰子游戏小案例

    python摇骰子游戏小案例 小案例: import random #充值函数 def topup(): global money n = input('充值金额(100元等于30个金币充值金额不低于 ...

  2. python写安卓游戏_python写lol游戏脚本(用python开发安卓脚本)

    python写lol游戏脚本 俾格米人和搅拌机的引擎. python-ogre和panda3d是用c/c编写的,但只提供了一个python接口. 你好,蟒蛇可以在Android上工作. 因为你可以在A ...

  3. python编程小代码_Python趣味小游戏编写代码

    这篇文章教大家用Python编写一些有趣的小程序,用到的都是一些简单的基础的python语句,适合刚入门的小白,可以尝试跟着一起敲一下,感受一下编程中的乐趣. 数字炸弹 相信大家在聚餐时都玩过猜数字游 ...

  4. python实现单机斗地主_Python编写斗地主游戏(单机版)

    斗地主玩法介绍: 斗地主是三个人玩,两个人斗一个地主,地主20张牌.农民每人17张牌. 王炸:大王+小王 是最大牌,可以炸别人任意的牌,单张的话 大王比小王大,两者都可以代替任意牌型. 第二大是炸弹: ...

  5. python简单小程序之猜词语游戏

    今天给大家分享一个利用python写的简单小游戏程序.猜词语. 下面看代码段 import time num = int(input('有多少组玩家\n')) guessWord = [] corre ...

  6. python数字组合算法_python猜数字游戏快速求解解决方案

    python猜数字游戏快速求解解决方案.使用方法: 1. 保存代码为guessall.py 2. 执行python guessall.py > result.txt 3. 打开result.tx ...

  7. python五子棋程序教程_python实现五子棋游戏

    本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下 话不多说,直接上代码: 全部工程文件,在GitHub:五子棋 效果预览: #!/usr/bin/env python ...

  8. python五子棋实验报告_python实现五子棋游戏

    本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下 话不多说,直接上代码: 全部工程文件,在GitHub:五子棋 效果预览: #!/usr/bin/env python ...

  9. python概率游戏_Python计算斗牛游戏的概率

    Python计算斗牛游戏的概率 过年回家,都会约上亲朋好友聚聚会,会上经常会打麻将,斗地主,斗牛.在这些游戏中,斗牛是最受欢迎的,因为可以很多人一起玩,而且没有技术含量,都是看运气(专业术语是概率). ...

最新文章

  1. 简要介绍一下贝叶斯定理( Bayes‘ theorem)
  2. COSO企业风险管理框架2017版发布!看看有哪些变化?
  3. 【sublime Text】sublime Text3安装可以使xml格式化的插件
  4. [转]Oracle 执行计划(Explain Plan) 说明
  5. linux vg主备机同步,切换VG主备链路(简)
  6. python链家数据分析统计服_链家数据分析一--数据离散化处理
  7. jdbc mysql数据库增删查改_通过JDBC对Mysql数据库进行简单的增删改查
  8. mysql binlog purge_正确清理mysql binlog日志方法
  9. util:properties/加载的配置文件中有中文导致乱码,如何通过分析源码解决问题?...
  10. mysql几搜索引擎_详细介绍基于MySQL的搜索引擎MySQL-Fullltext
  11. 计算机鼠标左右键作用,鼠标的左右键的用途
  12. Java软件开发修炼过程
  13. Spring Cloud
  14. 计算机用户删除 cmd,命令提示符下怎么新建用户和删除用户
  15. 紧急通知发布解决方案(互亿无线)
  16. Linux服务器间传文件SCP命令使用方法
  17. 玩转NVIDIA Jetson AGX Xavier(3)--- 使用JetPack 4.1为Xavier刷机
  18. C# 实现WinForm窗口最小化到系统托盘代码
  19. wcf负责与数据库打交道_与新手打交道时的神话
  20. 初识docker《部署docker容器虚拟化平台》

热门文章

  1. 关闭windows垃圾服务
  2. Android应用开发—重载fragment构造函数导致的lint errors
  3. Android service 中的stub类
  4. x230无线网卡驱动服务器版,ThinkPad X230网卡驱动
  5. 2017计算机考试题上机,2017年计算机二级上机考试试题及答案
  6. fifo java_java – 如何保证ThreadPoolExecutor中的FIFO执行顺序
  7. Python面试题(第二篇)
  8. 浅谈web开发以及django的安装和入门
  9. centos7安装java6_CentOS7.6安装jdk1.8
  10. oracle 试图访问已经在使用的事物处理临时表,解决ORA-14450:试图访问已经在使用的事务处理临时表-Oracle...