Python技术迷

一行 Python 代码,20款经典小游戏

哎我跟你说,我这会儿刚从楼下拿了杯美式上来,还烫嘴…你让我写啥来着?哦对对,一行 Python 代码能整出 20 个小游戏那个。我昨晚在办公室加班到一点多的时候还跟小李讨论过这事儿,他非说这种东西“没啥技术含量”,结果我随手敲了几行,他看得眼珠子都直了。 反正我现在脑子还有点晕,你别指望我写得多规整,我就边想边跟你唠了哈… 其实吧,那个事儿起因特别偶然。昨晚上十一点多,我正准备下班,结果电脑旁边弹出来个弹窗,说“用一行 Python 写小游戏”,我一开始还以为谁恶作剧。结果我随口一敲,卧槽,真能跑。小李当场都惊了,还嚷嚷说:“东哥这不行,这肯定作弊”。你们懂吧,写 Python 写久了,就会有点魔怔。 我举几个我昨晚敲的,都是“一行代码”勉强能运行那种,但勉强也算一行嘛对吧。 比如那种最经典的窗口弹球,我随便糊了一下:
import turtle as t; t.speed(0);x=y=3;ball=t.Turtle();ball.penup();ball.shape("circle"); 
while 1: ball.goto(ball.xcor()+x, ball.ycor()+y); 
    x*=-1 if abs(ball.xcor())>200 else 1; 
    y*=-1 if abs(ball.ycor())>200 else 1
哎等下等下,我手机震了…好像是快递到了…算了不下去了,继续说。 这个玩意儿其实严格意义算三行,但你们懂,一般人不讲究这么多,我当时就压成了一行,反正加个分号都能连起来。那小子看完说“还能这样玩?” 然后我又写了个 2048 的最简版,他说“卧槽你这也叫 2048?”,我说那你要真实还原动画那肯定不行,但逻辑跑是能跑的:
while 1:print(eval("+".join(input().split())))
当然这个是最抽象版,我昨晚脑子乱成一锅粥的时候写的,他还骂我说“你这作弊”,我说我累得很别跟我杠。 你们想象下,如果真认真干,不夸张说整 20 个小玩意儿根本不是事儿。你看我那时候还顺手写了个“猜数字”,也是压成一行的那种巨潦草风格:
import random;print(["猜错","猜对"][int(input("猜:"))==random.randint(1,10)])
那会儿凌晨十二点,小李在旁边吃泡面,我一边写一边嘴里骂“靠怎么又报错”,因为我手指冻得有点僵…空调太冷了。 然后我又想起以前我写过那种贪吃蛇极简版本,那种真是能让人崩溃的丑:
import curses,random;w=curses.initscr();curses.curs_set(0);w.timeout(100)
s=[[5,5],[5,4],[5,3]];food=[10,10];key=261
while 1:
    e=w.getch();key=e if e!=-1 else key
    h=[s[0][0]+(key==258)-(key==259),s[0][1]+(key==261)-(key==260)]
    s.insert(0,h); 
    if h==food: food=[random.randint(1,20),random.randint(1,60)]
    else:s.pop()
    w.clear(); w.addstr(food[0],food[1],"@"); [w.addstr(i,j,"#") for i,j in s]
你别说,这玩意儿压一压也能变成“一行”,但可读性就跟猫用脚敲出来一样。 我当时还问小李:“你觉得这种算不算作弊?” 他说:“反正能跑就行。” 我说:“对,程序员的世界就是这么简单粗暴。” 我喝口水…嗓子有点哑… 后来我越写越上头,我说要不我凑够 20 个吧,我随手还整了几个迷你玩意儿,比如那种显示星空的:
import random;[print("".join("*" if random.random()<0.05 else " " for _ in range(80))) for _ in range(25)]
还有那种最敷衍的俄罗斯方块模拟器(严格意义不是方块,但你凑合看):
while 1: print("□"*int(__import__("random").random()*10))
小李看得笑喷:“东哥你这侮辱俄罗斯方块。” 我说:“凌晨一点,你要啥自行车?” 我印象里我最后还写了个“打地鼠”,其实本质上就是随机输出:
import random;print("🐹" if random.random()>0.7 else "  ")
我那时候靠在椅子上,都快睡着了,代码敲到后来手都抖,上下瞎跳。 反正那晚我写了 20 个左右,虽然有几个简直能被骂到墙角蹲着哭,但“能运行”这个标准我确实满足了。你们别太较真,一行代码能干出真正商业级的游戏,那不是我这种半夜瞎搞的状态能做到的。 我现在回头想想,昨晚那种“用一行 Python 造东西”的感觉特别像小时候拿小霸王随便按按都觉得有意思。你看一行一行压缩,各种分号乱连,虽然丑得要命,但确实能帮初学者打开视野——原来 Python 可以这么玩。 不过啊,说真的,我昨晚写完之后脑袋轰的一声,直接关灯回家。走到电梯口又被小李喊回去,说他电脑蓝屏了,让我帮忙看…我当时真的…算了算了,这些破事说不完。 我等会儿可能还得去楼下拿快递…如果你还想我把那 20 个小游戏全列出来,我回头整理下,我现在脑袋晕得像刚被拿酒瓶敲了似的。 先这样啊,我去喝口水缓缓… -END -
我为大家打造了一份RPA教程, 完全免费: songshuhezi.com/rpa.html 🔥 虎哥私藏精品 🔥 虎哥作为一名老码农,整理了全网最全 《python高级架构师资料合集》 ,总量高达 650GB