自己用python写的五子棋 ,辛辛苦苦写的详细注释,等以后再回来看看自己的思路
用的函数式编程,面向对象不熟练,当时的想法是先通过函数式编程写出来,把思路整理一下,
理清楚过程事件了,再用面向对象重写,也算是再梳理一遍
用了第三方库pygame
有个问题,如果有大神知道,欢迎留言:
我想实现一个功能:
鼠标在移动的时候,如果鼠标位置靠近棋盘上某一个横竖线交叉点一定范围(上下左右各一半)的时候,能够在这个交叉点出现一个光标聚焦的标志(类似准星的玩意),移动到其他位置后,再在其他距离最近的横竖线交叉点出现
意思就是鼠标的光标无论停留在什么位置,我想要在最近的横竖线交叉点出现一个准星,表示棋子落子的位置,以防落子位置出现偏差落到其他位置 ,只能出现一个准星
我尝试用pygame.MOUSEMOTION事件,通过mouse.get_pos()得到光标的位置,然后再进行判断靠近哪一个交叉点,然后在这个交叉点画出一个准星,但是鼠标移动后会重新生成新的准信,我没办法删除之前的准星,导致一直在窗体上添加准星
我又尝试生成下一个准星时,重新绘制所有的pygame对象,但是由于MOUSEMOTION是鼠标移动事件,只要鼠标移动就会触发,会一直扫描,所以鼠标只要移动,就会生成准星,然后重绘所有的对象,导致不断执行,然后整个画面就一直一闪一闪的
求问:pygame能不能实现这个功能 ,怎么实现
我的初步想法是在while循环里的MOUSEMOTION事件里加一个延时
-*- coding: utf-8 -*-
__/author__by:Kevin_X/__
import pygame
win_W = 900 # 窗口宽度
win_H = 700 # 窗口高度
游戏初始化
def gameinit():
global window
pygame.init()
window = pygame.display.set_mode((win_W,win_H))
pygame.display.set_caption('五子棋 BY:Kevin_X')
window.fill((255, 218, 185))
pygame.display.flip()
# 棋盘划线15*15
x=20 # 棋盘起点(20,20),四周留空20
while x
Original: https://blog.csdn.net/weixin_65922074/article/details/126272825
Author: weixin_65922074
Title: python 五子棋 pygame
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/778995/
转载文章受原作者版权保护。转载请注明原作者出处!