20202107 《Python程序设计》实验四报告

课程:《Python程序设计》
班级: 2021
姓名: 张权城
学号:20202107
实验教师:王志强
实验日期:2020年5月19日
必修/选修: 公选课


1.实验内容

(一)Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。

(二)实验要求:

(1)程序能运行,功能丰富。(需求提交源代码,并建议录制程序运行的视频)10分
(2)综合实践报告,要体现实验分析、设计、实现过程、结果等信息,格式规范,逻辑清晰,结构合理。10分。
(3)在实践报告中,需要对全课进行总结,并写课程感想体会、意见和建议等。5分
(4)如果没有使用华为云服务(ECS或者MindSpore均可),本次实践扣10分。


2. 实验过程及结果

 

 

 

代码如下:

import pygame, sys, time, random

color_red = pygame.Color(255, 0, 0)

color_white = pygame.Color(255, 255, 255)

color_green = pygame.Color(0, 255, 0)

pygame.init()

screen = pygame.display.set_mode((600, 400))

screen.fill(color_white)

pygame.display.set_caption(“贪吃蛇小游戏”)

arr = [([0] * 41) for i in range(61)] # 创建一个二维数组

x = 10 # 蛇的初始x坐标

y = 10 # 蛇的初始y坐标

foodx = random.randint(1, 60) # 食物随机生成的x坐标

foody = random.randint(1, 40) # 食物随机生成的y坐标

arr[foodx][foody] = -1

snake_lon = 3 # 蛇的长度

way = 1 # 蛇的运动方向

while True:

screen.fill(color_white)

time.sleep(0.1)

for event in pygame.event.get(): # 监听器

if event.type == pygame.QUIT:

sys.exit()

elif event.type == pygame.KEYDOWN:

if (event.key == pygame.K_RIGHT) and (way != 2): # 向右移动且避免反向移动

way = 1

if (event.key == pygame.K_LEFT) and (way != 1): # 向左移动且避免反向移动

way = 2

if (event.key == pygame.K_UP) and (way != 4): # 向上移动且避免反向移动

way = 3

if (event.key == pygame.K_DOWN) and (way != 3): # 向下移动且避免反向移动

way = 4

if way == 1:

x += 1

if way == 2:

x -= 1

if way == 3:

y -= 1

if way == 4:

y += 1

if (x > 60) or (y > 40) or (x 0): # 判断死亡(撞墙或自食)

sys.exit()

arr[x][y] = snake_lon

for a, b in enumerate(arr, 1):

for c, d in enumerate(b, 1):#在二维数组中,食物为-1,空地为0,蛇的位置为正数

if (d > 0):

#print(a,c) #输出蛇的当前坐标

arr[a - 1][c - 1] = arr[a - 1][c - 1] - 1

pygame.draw.rect(screen, color_green, ((a - 1) * 10, (c - 1) * 10, 10, 10))

if (d

pygame.draw.rect(screen, color_red, ((a - 1) * 10, (c - 1) * 10, 10, 10))

if (x == foodx) and (y == foody): #蛇吃到食物

snake_lon += 1 #长度+1

while (arr[foodx][foody] != 0): #刷新食物

foodx = random.randint(1, 60)

foody = random.randint(1, 40)

arr[foodx][foody] = -1

pygame.display.update()

 

 

华为云主机运行:


putty勾选Enable X11 forwarding


将文件上传至云主机

 

 

 

输入执行代码的命令

 

 

最后执行未能成功,因为卡在了没有输出屏幕上,网上查看的教程中,这一步需要配置xming来实现,可是按着网上的教程,最后结果却不同,xming一直报错。由于时间原因,这次实验也不得已以此结尾,这也是我这次实验最大的遗憾。

 

配置好的xming

 

 

 

3. 实验过程中遇到的问题和解决过程
    其他(感悟、思考等)

此次实验内容较为综合,内容较多,让我的python水平前进了一大步。就是华为云服务器的部分让我很是头疼,首先是pygame模块在安装时一直报错,而且在网上搜索解决方法也非常少。后面要用到的xming也一直出问题,困扰了我很长时间,可惜最后还是没有做出结果。
总体来说,这次实验是一次很好的对我python能力的锻炼过程,但是在云主机上运行的实验效果不是很好,而且我还是没理解为什么要在云主机上运行,其用意何在,希望老师在以后的python课上能为学生们讲解一下。
结课感想与体会

python课程是让我上大学两年以来感受到干货最多的选修课,很多人说这门课水,我认为那是因为他们没有认真学,在认真学习后,就会发现这门课与上过的C语言不一样,C语言一整门课都在讲语法,很是枯燥;而python经过一学期的课程,给我呈现了很多实用又感到好玩的功能,而且还不是很难,这又重新激起了我作为一名计算机专业的学生本应对计算机语言产生的兴趣。

我对这门课的建议有如下几条:

1.平时上课好多敲的代码可以在课下给学生及时复习,能够加深学生们的记忆,也方便日后复习;


2.平时有时上网课时、或者是上实验课分教室时,在线上听课会有一些不方便,有些问题无法及时反映,而且声音有时比较弱,导致听课          的效率较正常的低一些,建议做出改善;


3.实验课时,我认为应多带着学生过几遍代码流程,否则如果只是一遍的话,学生们可能课上记住了,但是课下就忘得一干二净,从而不          得已从头再来,不仅课的内容没记住多少,也占用了更多课下的时间。


总而言之,python是一门很好的语言,这门课也让我受益良多,相信在王志强老师的带领下,越来越多的电科院学子都会爱上python!