使用Python制作坦克大战小游戏,进一步提高代码水平

使用Python制作坦克大战小游戏,进一步提高代码水平

首页休闲益智小坦克大作战更新时间:2024-05-11

入门Python后,就可以拿些小案例练手了,这时候千万不要傻乎乎地成天啃语法书。

编程是一门实践的手艺,讲究孰能生巧。不管是去手撸算法、或者照葫芦画瓢写几个小游戏都可以让你的Python突飞猛进。

之前看github比较多,推荐给大家几个不错的项目。

1、用Python实现所有常见算法

这个项目包含了上千个算法的Python代码实现,几乎囊括了大部分常见算法。

包括回溯、布尔代数、元胞自动机、线性回归、图算法、网络流等等

以排序为例,该项目提供了近50种算法,比如下面的树形选择排序:

""" Tree_sort algorithm. Build a BST and in order traverse. """ class node: # BST data structure def __init__(self, val): self.val = val self.left = None self.right = None def insert(self, val): if self.val: if val < self.val: if self.left is None: self.left = node(val) else: self.left.insert(val) elif val > self.val: if self.right is None: self.right = node(val) else: self.right.insert(val) else: self.val = val def inorder(root, res): # Recursive traversal if root: inorder(root.left, res) res.append(root.val) inorder(root.right, res) def tree_sort(arr): # Build BST if len(arr) == 0: return arr root = node(arr[0]) for i in range(1, len(arr)): root.insert(arr[i]) # Traverse BST in order. res = [] inorder(root, res) return res if __name__ == "__main__": print(tree_sort([10, 1, 3, 2, 9, 14, 13])) © 2021 GitHub, Inc.

其他排序:

项目地址:TheAlgorithms/Python

2、Python制作小游戏、画图

这是大家最喜闻乐见的代码练习方式,通过制作小游戏、画一个卡通图片,能熟悉基础语法的使用,并熟悉相关库。

比如说,用Python制作坦克大战游戏:

代码虽然复杂点,但仔细琢磨琢磨应该都能搞会,还能帮你熟悉应用开发的流程。

坦克大战部分代码

如果你觉得制作游戏比较复杂,那可以用python的turtle库绘制卡通人物

皮卡丘

turtle语法非常简单,就是一些画笔的操作:

绘制皮卡丘部分代码

游戏和绘图建议初学者都可以去试试,是很好的锻炼机会。

项目地址:liuzuoping/python_Games

3、制作可视化图表

众所周知,python擅长数据科学,能制作各种图表。

matplotlib是python可视化的基础库,非常强大,对可视化感兴趣的小伙伴一定要去试试。

曲线图

import matplotlib.pyplot as plt # Fixing random state for reproducibility np.random.seed(19680801) dt = 0.01 t = np.arange(0, 30, dt) nse1 = np.random.randn(len(t)) # white noise 1 nse2 = np.random.randn(len(t)) # white noise 2 # Two signals with a coherent part at 10Hz and a random part s1 = np.sin(2 * np.pi * 10 * t) nse1 s2 = np.sin(2 * np.pi * 10 * t) nse2 fig, axs = plt.subplots(2, 1) axs[0].plot(t, s1, t, s2) axs[0].set_xlim(0, 2) axs[0].set_xlabel('time') axs[0].set_ylabel('s1 and s2') axs[0].grid(True) cxy, f = axs[1].cohere(s1, s2, 256, 1. / dt) axs[1].set_ylabel('coherence') fig.tight_layout() plt.show()

三维图

import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D X = np.arange(-5, 5, 0.25) Y = np.arange(-5, 5, 0.25) X, Y = np.meshgrid(X, Y) R = np.sqrt(X**2 Y**2) Z = np.sin(R) fig = plt.figure() ax = Axes3D(fig, auto_add_to_figure=False) fig.add_axes(ax) ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.viridis) plt.show()

动图

项目地址:Python plotting - Matplotlib 3.4.1 documentation


入门基础后,也不代表可以完全不看语法了,因为很多概念、函数需要反复查、记,所以需要常看常练习。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved