分类 编程语言 下的文章

这是个很危险的决定,但是我还是坚持更新到了v1.2.0-rc.2 0b021e5 ,总有人要去试错提交issue
这是一个预发行版本,Typecho的作者出于某种原因在30 Oct 2017 1.1(17.10.30)后没有再发布稳定发行版,但是强大的开源社区还是不断地对Typecho进行了相当活跃的迭代。
感谢开源社区,替换admin和var目录后我顺利完成了整个程序的更新。

设计目的是方便在H&G里打狙。顺带一提,我忘了怎么制作外挂了(也许写的出挂我就用不上这个了)。

功能要素

  1. 一个小准星,几个像素点聚集在一个点的就可以。
  2. 按键调整是否显示
  3. 按键调整准星位置
  4. 保持准星在游戏画面内稳定显示不过渡遮挡按钮

预期实现方法

python3 tkinter 像素级超小带色无边框窗口

具体实现:

from contextlib import suppress
from tkinter import *
from keyboard import *
root=Tk()
root.title("crosshair")
x = round(root.winfo_screenwidth()/2-2)
y = round(root.winfo_screenheight()/2-2)
root.geometry("4x4+{}+{}".format(x,y))
root.resizable(0,0)
root.overrideredirect(True)
root.config(bg="#7cfc00")
root.lift()
root.attributes("-topmost", True) #保持准星窗口在顶层
root.wm_attributes('-topmost', 1)
hook_key("end", root.destroy)
def autoadjust():
    x = round(root.winfo_screenwidth()/2-2)
    y = round(root.winfo_screenheight()/2-2)
    root.geometry("4x4+{}+{}".format(x, y))

hook_key("home",autoadjust)

root.mainloop()
print("hello")
unhook_all()

对于需要基础运行环境的普通用户当然是很方便了,但是对于开发人员可不见得方便,商店安装的python容易因为路径产生一些不必要的麻烦,比如你使用pip安装了pyinstaller,但是在Windows Terminal执行pyinstaller 你会得到报错提示没有这个命令。手动进入pyinstaller安装目录,你会发现pyinstaller.exe不在python目录里,通常这时候只需要移动这个可执行文件到python目录即可,当然你也可能遇到别的问题。

我认为最保险的做法

为了避免以后安装其他第三方软件包再出类似或者其他问题,我直接卸载了商店版python,然后去华为开源镜像站下载了相同版本(其实官网下载的也可以一键安装,至少3.9.10是这样的)。我没有重启计算机,直接勾上添加到PATH然后一键安装。

重新安装官网版后

问题解决了,pip安装pyinstaller后可以直接执行pyinstaller命令。

运算符描述实例
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符c *= a 等效于 c = c * a
/=除法赋值运算符c /= a 等效于 c = c / a
%=取模赋值运算符c %= a 等效于 c = c % a
**=幂赋值运算符c **= a 等效于 c = c ** a
//=取整除赋值运算符c //= a 等效于 c = c // a

列举部分占位符

%d整数的占位符
%f小数的占位符
%%表示百分号(因为百分号代表了占位符,所以带占位符的字符串中要表示百分号必须写成%%)

一、 使用占位符%格式化

按序罗列式 适用于python2.6前,沿用至今 延用了C语言的输出格式
a=1.1
b=2
print("有两个数,分别是浮点数a= %f 和整数b= %d" %(a,b))

这种写法,必须在后方按照顺序罗列准备用于替换占位符的变量名称,能不能在前面直接指定用于替换的变量名称呢?

二、 使用format格式化

官方推荐 python2.6新增,沿用至今
格式:str.format
a=1.1
b=2
print("有两个数,分别是浮点数a= {}和整数b= {}".format(a,b)) 
# {key}称为索引,索引为空{}时,按照顺序从后方取值,可以使用01234这样的顺序的数字作为索引进行排序。
print("有两个数,分别是浮点数a= {0}和整数b= {1}".format(a,b))
# 也可以直接使用一个特定名称作为索引。
print("有两个数,分别是浮点数a= {num_a}和整数b= {num_b}".format(num_a=a,num_b=b))
# 你也可以把变量a,b替换为一个单引号包括的字符串,如:'1.1'

以上三个print语句都输出:有两个数,分别是浮点数a= 1.1和整数b= 2

三、 f-string格式化

直接指定式 适用于Python >= 3.6
f-string是在字符串前面加上 "f",{}直接使用变量、表达式等。
a=1.1
b=2
print(f"有两个数,分别是浮点数a= {a:.1f}和整数b= {b:d}")
# 为啥加个.1而不是直接写{a:f} ?f前面的.1指的是保留小数点后一位小数,不写.1输出的就是:1.100000

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

我在Linux.cn的一篇文章里找到了这个游戏,试玩了一下略微简陋,但是总的来说感觉还不错。
官网:http://www.minetest.net/ 官方Wiki:https://wiki.minetest.net/Getting_Started/zh-hans
有个小插曲,中文文档里对GNU/Linux安装是这么描述的:sudo apt get install minetest,显然少了个"-",我就跑去IRC里提Bug了,现在已经改为:sudo apt install minetest,这是我今年正经捉的第一个小虫子,也是第一次主动成功使用IRC和别人用英语交流。

兑现承诺:和朋友分享这个游戏

sendpix0.jpg
截图_2021-12-19_03-33-35.png

- 阅读剩余部分 -