x的平方加y平加xy的java语言_如何将网格坐标转换回(x,y)?

我在PyQt5中创建一个游戏,用户可以在网格内单击以形成正方形 . 如果用户选择形成正方形的四个网格空间,则角落用线连接 . 我的代码目前看起来像这样:

import sys

from PyQt5.QtGui import QPainter, QColo, QPen, QBrush

from PyQt5.QtCore import Qt, QRect, QPoint

from PyQt5.QtWidgets import QWidget, QApplication

CELL_COUNT = 8

CELL_SIZE = 50

GRID_ORIGINX = 150

GRID_ORIGINY = 150

W_WIDTH = 700

W_HEIGHT = 700

class TribeSquares(QWidget):

def __init__(self):

super().__init__()

self.setGeometry(300, 300, W_WIDTH, W_HEIGHT)

a = ''

self.__board = [[a,a,a,a,a,a,a,a],[a,a,a,a,a,a,a,a],[a,a,a,a,a,a,a,a],[a,a,a,a,a,a,a,a],[a,a,a,a,a,a,a,a],[a,a,a,a,a,a,a,a],[a,a,a,a,a,a,a,a],[a,a,a,a,a,a,a,a]]

self.__row = None

self.__col = None

self.__clicked0 = []

self.show()

首先,我将(x,y)坐标转换为网格坐标 .

def mousePressEvent(self, event):

self.__x = event.x()

self.__y = event.y()

self.__row = (event.y() - GRID_ORIGINY) // CELL_SIZE

self.__col = (event.x() - GRID_ORIGINX) // CELL_SIZE

row = self.__row

col = self.__col

self.update()

对于另一种方法,我想将(row,col)转换回(x,y) . 我尝试颠倒过程并像这样做:

def cell2coord(self, row, col):

return ((row * CELL_SIZE) + GRID_ORIGINX, (col * CELL_SIZE) + GRID_ORIGINY)

接下来,在paintEvent中,我尝试调用我创建的方法 .

def paintEvent(self, event):

qp = QPainter()

qp.begin(self)

for r in range(CELL_COUNT):

for c in range(CELL_COUNT):

qp.setPen(QPen(Qt.black, 1))

qp.drawRect(CELL_SIZE * c + GRID_ORIGINX, CELL_SIZE * r + GRID_ORIGINY, CELL_SIZE, CELL_SIZE)

if (r, c) in self.__clicked0:

qp.setPen(QPen(QColor(40, 85, 66), 1))

qp.setBrush(QColor(40, 85, 66))

qp.drawRect(CELL_SIZE * c + GRID_ORIGINX + 7.5, CELL_SIZE * r + GRID_ORIGINY + 7.5, 35, 35)

qp.setBrush(QColor(237, 237, 237))

elif (r, c) in self.__clicked1:

qp.setPen(QPen(QColor(231, 181, 71), 1))

qp.setBrush(QColor(231, 181, 71))

qp.drawRect(CELL_SIZE * c + GRID_ORIGINX + 7.5, CELL_SIZE * r + GRID_ORIGINY + 7.5, 35, 35)

qp.setBrush(QColor(237, 237, 237))

for (r, c) in self.__clicked0:

x,y = self.cell2coord(r,c)

x2,y2 = self.cell2coord(self.__row, self.__col)

if r == self.__row or c == self.__col:

qp.setPen(QPen(QColor(40, 85, 66), 5))

qp.drawLine(x, y, x2, y2)

for (r, c) in self.__clicked1:

if r == self.__row or c == self.__col:

qp.setPen(QPen(QColor(231, 181, 71), 5))

qp.drawLine(x, y, x2, y2)

qp.end()

if __name__ == '__main__':

app = QApplication(sys.argv)

ex = TribeSquares()

sys.exit(app.exec_())

但它没有用 . 线条没有显示在正确的位置,并连接用户点击网格中创建的方块 . 我能做什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
08-10
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值