`
westice
  • 浏览: 115586 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

练手项目1(wxpython连连看)

阅读更多

  开始实习啦!要用python,

  第一个练手项目,用wxpython写界面,实现了连连看的1连通,2连通,3连通

  算法:1,如果相邻肯定连通,判断两个格子是否在同行同列且之间是否空白,如果空白则连通

           2,1连通不满足,判断两个格子能否构成一个直角,通过两个选中格子p1p2生成另两个对角点p3p4(四个点构成一个矩形),判断p3能否和p1p2够成1连通,或者p4能否和p1p2构成1连通,满足一个条件即可

           3,2连通也不满足,从p1周围(同行同列)找一个和p1构成1连通的p5,判断p5是否能和p2构成2连通,如果满足则属于3连通

 

python函数:

    #单线连通
    def linecheck(self,index0,index1):
        x_y0=self.getX_Y(index0)
        x_y1=self.getX_Y(index1)
        x0=x_y0[0]
        y0=x_y0[1]
        x1=x_y1[0]
        y1=x_y1[1]
        if x0==x1:#同一列是否有通路
           if abs(y0-y1)==1:
               return True#相邻
           tempflag=True
           for i in range(min(y0,y1)+1,max(y0,y1),1):
               if self.imageProlist[self.getIndex(x0,i)].getrandnum()!=(-1):
                  tempflag=False
                  break #同一列不通
           if tempflag:
               return True
        if y0==y1:#同一行是否有通路  
            if abs(x0-x1)==1:
                return True#相邻
            tempflag=True
            for i in range(min(x0,x1)+1,max(x0,x1),1):
                if self.imageProlist[self.getIndex(i,y0)].getrandnum()!=(-1):
                    tempflag=False
                    break#同一行不通
            if tempflag:
                return True     
        return False#没有单线连通
    
    #单直角连通,即有两根线相交
    def secondlinecheck(self,index0,index1):
        x_y0=self.getX_Y(index0)
        x_y1=self.getX_Y(index1)
        x0=x_y0[0]
        y0=x_y0[1]
        x1=x_y1[0]
        y1=x_y1[1]
        #即判断(x0,y1)和两点单线连通,或者(x1,y0)和两点单线连通
        index01=self.getIndex(x0,y1)
        index10=self.getIndex(x1,y0)
        #这两点本身要为空     
        if self.linecheck(index01,index0)\
           and self.linecheck(index01,index1)\
           and self.imageProlist[index01].getrandnum()==(-1):
            return True
        if self.linecheck(index10,index0)\
           and self.linecheck(index10,index1)\
           and self.imageProlist[index10].getrandnum()==(-1):
            return True
        return False
        
    #双直角,三线连接
    def trilinecheck(self,index0,index1):
        x_y0=self.getX_Y(index0)
        x0=x_y0[0]
        y0=x_y0[1]
        #在p1周围寻找一个空格与p2单直角连通即可
        #先固定y0寻找空格,非空格停止,越界停止
        iter_x=x0-1#在左边寻找
        while iter_x>=0 and iter_x<self.gridwidth:
            if self.imageProlist[self.getIndex(iter_x,y0)].getrandnum()==(-1):
                #这是p0周围空格的点
                if self.secondlinecheck(self.getIndex(iter_x,y0),index1):
                    return True
            else:
               #退出这层循环
               break
            iter_x-=1 
        iter_x=x0+1#在右边寻找
        while iter_x>=0 and iter_x<self.gridwidth:
            if self.imageProlist[self.getIndex(iter_x,y0)].getrandnum()==(-1):
                #这是p0周围空格的点
                if self.secondlinecheck(self.getIndex(iter_x,y0),index1):
                    return True
            else:
               #退出这层循环
               break
            iter_x+=1
        #先固定x0寻找空格,非空格停止,越界停止
        iter_y=y0-1#在上边寻找
        while iter_y>=0 and iter_y<self.gridheight:
            if self.imageProlist[self.getIndex(x0,iter_y)].getrandnum()==(-1):
                #这是p0周围空格的点
                if self.secondlinecheck(self.getIndex(x0,iter_y),index1):
                    return True
            else:
               #退出这层循环
               break
            iter_y-=1
        iter_y=y0+1#在下边寻找
        while iter_y>=0 and iter_y<self.gridheight:
            if self.imageProlist[self.getIndex(x0,iter_y)].getrandnum()==(-1):
                #这是p0周围空格的点
                if self.secondlinecheck(self.getIndex(x0,iter_y),index1):
                    return True
            else:
               #退出这层循环
               break
            iter_y+=1
        return False #都不满足
 
分享到:
评论

相关推荐

    wxpython贪食蛇(练手项目2)

    【标题】"wxpython贪食蛇(练手项目2)" 是一个使用Python的GUI库wxPython实现的编程项目,旨在帮助开发者通过制作简单的贪食蛇游戏来熟悉和锻炼wxPython的使用技巧。贪食蛇游戏是一款经典的电子游戏,玩家通过控制蛇...

    Python 的WxPython库开源扫雷游戏

    Python WxPython开源扫雷游戏PyMine为开源扫雷游戏PyMine 使用Python语言和WxPython UI框架。本例移植自开源例程JMine 请在程序所在目录使用python PyMine.py启动例程需要先安装Python 3.11和wxPython 4.2Python ...

    Part1 wxPython入门

    #### 1. 欢迎来到wxPython - **简介**:wxPython是一种广泛使用的Python库,它允许开发者利用wxWidgets C++库来创建跨平台的图形用户界面(GUI)。wxPython是免费且开源的,支持Windows、Mac OS X和Linux等操作系统...

    wxPython-demo-4.0.3.tar:wxPython官方demo

    1. **基础控件**:wxPython提供了各种常见的GUI控件,如按钮(Button)、文本框(TextCtrl)、复选框(CheckBox)、单选按钮(RadioButton)、列表框(ListBox)、滚动条(Scrollbar)等。学习这些基础控件的使用是...

    wxPython几本好书

    几本很不错的关于python gui的wxPython的书,包括“wxPython in Action(中文版)” 活学活用wxPython “《wxPython in Action》Noel Rappin, Robin Dunn著 2006年版”

    wxPython in Action 活学活用wxPython

    通过《活学活用wxPython》,读者不仅可以学习到wxPython的基础知识,还能接触到实际项目开发中的常见问题和解决方案。书中丰富的示例代码和清晰的图解有助于加深理解,使读者能够在实践中快速上手,灵活运用wxPython...

    wxPython官方文档

    1. **控件(Widgets)**:wxPython提供了一系列控件,如按钮、文本框、复选框、单选按钮、滚动条、列表框等,这些都是构建用户界面的基本元素。 2. **框架(Frames)**:框架是wxPython应用中的顶级窗口,可以包含...

    WxPython实现无边框界面

    在Python的GUI编程中,WxPython库是一个广泛使用的工具,它提供了丰富的控件和功能,使得开发者能够方便地创建出美观且功能完备的图形用户界面。无边框界面是一种特殊的界面设计,它去掉了窗口的常规边框,通常用于...

    wxPython-入门教程.pdf

    【基础代码示例】清单1展示了一个简单的wxPython应用代码片段: 1. 首先,导入了必要的系统模块和wxPython库。 2. `wxPython.wx`包含了所有与GUI相关的类和函数。 3. 定义了一个名为_window的类,继承自wxFrame,这...

    wxPython-demo-4.0.6_wxpython官方demo_wxPython-demo_wxpython_DEMO_w

    这个压缩包文件"wxPython-demo-4.0.6_wxpython官方demo_wxPython-demo_wxpython_DEMO_w"包含了wxPython的官方演示程序,是学习和探索wxPython功能的理想资源。 【wxPython Demo】是wxPython库附带的一系列示例和...

    wxPython开发参考书籍

    1. **安装**: 可通过 pip 安装,命令行输入 `pip install wxpython`。 2. **环境**: 确保 Python 环境已经设置好,推荐使用虚拟环境来隔离项目依赖。 3. **版本选择**: 不同版本的 wxPython 对应不同的操作系统和 ...

    python2.4 and wxPython

    这些库的集成打包对于基于Python 2.4和wxPython的项目非常有用,它们提供了构建、运行和扩展应用程序所需的必要组件。不过,值得注意的是,由于这些软件包都是较老的版本,可能无法与现代的Python代码或库兼容,因此...

    wxPython教程及实例

    1. **安装与设置**:介绍如何在不同操作系统上安装`wxPython`,包括依赖项的处理和环境配置。 2. **基础知识**:讲解`wxPython`的基本概念,如窗口、框架、面板、事件处理和布局管理器。 3. **控件与组件**:详述...

    wxpython中文教程wxpython中文教程

    frame = _window(None, -1, "wxPython: (A Demonstration)") self.SetTopWindow(frame) return True [9]app = App(0) app.MainLoop() ``` - **关键行解析**: - 行[1]-[2]:导入必要的Python标准库(`sys`, `os...

    wxPython 2.8 Application Development Cookbook

    1. **wxPython的核心概念** - **窗口管理**:理解框架中的窗口层次结构,学习如何创建、布局和管理各种类型的窗口。 - **事件处理**:深入了解事件驱动编程模型,掌握如何响应用户交互和系统事件。 - **控件和...

    wxPython教程

    1. **控件与布局管理**:wxPython提供了一系列预定义的控件,如按钮、文本框、列表框等,它们可以组合成复杂的用户界面。布局管理器(如BoxSizer, GridSizer)帮助你自动调整控件的位置和大小,以适应不同的屏幕尺寸...

    wxpython3.9_py2.7

    1. **wxPython 2.8 Application Development Cookbook.pdf** - 这可能是一本关于使用wxPython 2.8开发应用程序的指南,虽然版本号与标题中的不完全匹配,但可能包含了适用于wxPython 3.9的基础知识和通用技巧。...

    wxpython安装包

    wxPython是一个Python绑定到wxWidgets库的开源项目,它允许Python开发者构建原生的、跨平台的图形用户界面,提供了一种简单易用的方式来创建GUI应用。 1. **wxWidgets库**:wxWidgets是wxPython的基础,它是一个C++...

    wxpython实战

    ### wxPython实战知识点详解 #### 一、wxPython入门概览 **1.1 开始wxPython** - **wxPython简介:** wxPython是一个用于Python的GUI开发工具包,它基于wxWidgets C++库,提供了丰富的组件来创建跨平台的应用程序...

Global site tag (gtag.js) - Google Analytics