93
社区成员
发帖
与我相关
我的任务
分享课程:《Python程序设计》
班级: 2341
姓名: 孔志达
学号:20234102
实验教师:王志强
实验日期:2024年5月25日
必修/选修: 公选课
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
课代表和各小组负责人收集作业(源代码、视频、综合实践报告)
例如:编写从社交网络爬取数据,实现可视化舆情监控或者情感分析。
例如:利用公开数据集,开展图像分类、恶意软件检测等
例如:利用Python库,基于OCR技术实现自动化提取图片中数据,并填入excel中。
例如:爬取天气数据,实现自动化微信提醒
例如:利用爬虫,实现自动化下载网站视频、文件等。
例如:编写小游戏:坦克大战、贪吃蛇、扫雷等等
注:在Windows/Linux系统上使用VIM、PDB、IDLE、Pycharm等工具编程实现。
制作贪吃蛇游戏并进行运行,如图



下图是运行结果:


import pygame
import time
import random
pygame.init()
# 设置窗口大小
window_width = 800
window_height = 600
# 设置颜色
black = (0, 0, 0)
white = (255, 255, 255)
red = (255, 0, 0)
# 设置蛇和食物的大小
snake_block = 10
snake_speed = 15
# 初始化窗口
window = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption('贪吃蛇游戏')
# 蛇的初始位置
snake_list = []
snake_length = 1
# 设置蛇的位置
x1 = window_width / 2
y1 = window_height / 2
# 设置蛇的移动
x1_change = 0
y1_change = 0
# 设置食物的位置
foodx = round(random.randrange(0, window_width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, window_height - snake_block) / 10.0) * 10.0
clock = pygame.time.Clock()
font_style = pygame.font.SysFont(None, 50)
def message(msg, color):
mesg = font_style.render(msg, True, color)
window.blit(mesg, [window_width / 6, window_height / 3])
game_over = False
while not game_over:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -snake_block
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -snake_block
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = snake_block
x1_change = 0
if x1 >= window_width or x1 < 0 or y1 >= window_height or y1 < 0:
game_over = True
x1 += x1_change
y1 += y1_change
window.fill(black)
pygame.draw.rect(window, red, [foodx, foody, snake_block, snake_block])
snake_head = []
snake_head.append(x1)
snake_head.append(y1)
snake_list.append(snake_head)
if len(snake_list) > snake_length:
del snake_list[0]
for x in snake_list[:-1]:
if x == snake_head:
game_over = True
for x in snake_list:
pygame.draw.rect(window, white, [x[0], x[1], snake_block, snake_block])
pygame.display.update()
if x1 == foodx and y1 == foody:
foodx = round(random.randrange(0, window_width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, window_height - snake_block) / 10.0) * 10.0
snake_length += 1
clock.tick(snake_speed)
message("游戏结束", red)
pygame.display.update()
time.sleep(2)
pygame.quit()
1)
游戏玩法:回车开始游戏;空格暂停游戏/继续游戏;方向键/wsad控制小蛇走向
思路:用列表存储蛇的身体;用浅色表示身体,深色背景将身体凸显出来;
蛇的移动:仔细观察,是:身体除头和尾不动、尾部消失,头部增加,所以,新添加的元素放在列表头部、删除尾部元素;
游戏结束判定策略:超出边界;触碰到自己的身体:蛇前进的下一格子为身体的一部分(即在列表中)。
2)
蛇的移动,首先根据方向来判断,这里使用pos变量来记录方向
pos(1, 0) //表示当前蛇向右的方向
pos(-1, 0) //表示当前蛇向左的方向
pos(0, 1) //表示当前蛇向下的方向
pos(0, -1) //表示当前蛇向上的方向
对pycharm了解不够充分,在一开始屡次碰壁,源代码无法在pycharm中运行。后根据报错提示,找到了问题所在——没有下载pygame安装包,之后下载pygame的安装包后,再试,就能够成功运行了。
通过这次的python的综合实践,我对pycharm有了更深一层的认识,并且深入体会到了python在日常生活中的巨大作用,起到娱乐,信息查询,统计分类等作用。
感想:老师真的太好了!!!上课很温柔,尽管身为文科生对代码之类的很不熟悉,老师也没有生气烦躁,上课回答不上问题,老师也没有惩罚。第一次接触python,从第一节课的大概能听懂,到后面越来越听不懂,真的感受到了python浓浓的“恶意”,但是实验课上老师近乎“手把手”的教授代码,实验报告算是有惊无险地完成了。尽管对python还是一知半解,但是也确实体会到了python的奇妙之处,以后要将python运用到日常生活中,可以帮助我节约很多时间。
意见和建议:
老师超级棒,是否可以在接下来的课程中为同学们扩展一些更有用的知识。