1. 程式人生 > 其它 >20214311江俊涵 實驗四 Python綜合實踐

20214311江俊涵 實驗四 Python綜合實踐

20212205 2021-2022-2 Python程式設計》實驗四報告

課程:《Python程式設計》
班級: 2143
姓名: 江俊涵
學號:20214311
實驗教師:王志強
實驗日期:2022年5月29日
必修/選修: 公選課

1.實驗內容

Python綜合應用:爬蟲、資料處理、視覺化、機器學習、神經網路、遊戲、網路安全等。
注:在華為ECS伺服器(OpenOuler系統)和物理機(Windows/Linux系統)上使用VIM、PDB、IDLE、Pycharm等工具程式設計實現。

2. 實驗過程及結果

(一)使用python編寫遊戲蟲子大戰水果

(二)實驗分析

1.
匯入庫
import pygame
import time
import random

2.
設定視窗大小
window_x = 720
window_y = 480

3.
定義顏色以便呼叫
black = pygame.Color(0, 0, 0)
white = pygame.Color(255, 255, 255)
red = pygame.Color(255, 0, 0)
green = pygame.Color(0, 255, 0)
blue = pygame.Color(0, 0, 255)
4.
初始化pygame(1*
pygame.init()

5.
初始化遊戲視窗
pygame.display.set_caption('DKY蟲子大戰水果')
game_window = pygame.display.set_mode((window_x, window_y))
6.
FPS(每秒幀數)控制器(2*
fps = pygame.time.Clock()
7.
定義蟲子預設位置
worm_position = [100, 50]

定義蟲子速度

snake_speed = 15


定義蟲子的前 4 個塊
snake_body = [ [100, 50],
[90, 50],
[80, 50],
[70, 50]
]
水果位置
fruit_position = [random.randrange(1, (window_x//10)) * 10,
random.randrange(1, (window_y//10)) * 10]
fruit_spawn = True(3*


設定預設的蟲子方向向右
direction = 'RIGHT'
change_to = direction(4*

8.
初始分數
score = 0


顯示評分功能
def show_score(choice, color, font, size):
建立字型物件 score_font
score_font = pygame.font.SysFont(font, size)

建立顯示錶面對象 core_surface
score_surface = score_font.render('Score : ' + str(score), True, color)

為文字表面物件建立一個矩形物件
score_rect = score_surface.get_rect()

顯示文字
game_window.blit(score_surface, score_rect)

9.
遊戲結束功能
def game_over():
建立字型物件 my_font
my_font = pygame.font.SysFont('times new roman', 50)

建立將在其上繪製文字的文字表面
game_over_surface = my_font.render('Your Score is : ' + str(score), True, red)

為文字表面物件建立一個矩形物件
game_over_rect = game_over_surface.get_rect()

設定文字位置
game_over_rect.midtop = (window_x / 2, window_y / 4)

blit 將在螢幕上繪製文字
game_window.blit(game_over_surface, game_over_rect)
pygame.display.flip()

2 秒後我們將退出程式
time.sleep(2)

停用 pygame 庫
pygame.quit()

退出程式
quit()
10.
遊戲主函式,控制蟲子的
# Main Function
while True:

# 處理關鍵事件
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
change_to = 'UP'
if event.key == pygame.K_DOWN:
change_to = 'DOWN'
if event.key == pygame.K_LEFT:
change_to = 'LEFT'
if event.key == pygame.K_RIGHT:
change_to = 'RIGHT'

# 如果同時按下兩個鍵
# 我們不想讓蛇同時向兩個方向移動
if change_to == 'UP' and direction != 'DOWN':
direction = 'UP'
if change_to == 'DOWN' and direction != 'UP':
direction = 'DOWN'
if change_to == 'LEFT' and direction != 'RIGHT':
direction = 'LEFT'
if change_to == 'RIGHT' and direction != 'LEFT':
direction = 'RIGHT'

# 移動蛇
if direction == 'UP':
snake_position[1] -= 10
if direction == 'DOWN':
snake_position[1] += 10
if direction == 'LEFT':
snake_position[0] -= 10
if direction == 'RIGHT':
snake_position[0] += 10

# 蛇體生長機制
# 如果水果和蛇發生碰撞,那麼分數將增加 10
snake_body.insert(0, list(snake_position))
if snake_position[0] == fruit_position[0] and snake_position[1] == fruit_position[1]:
score += 10
fruit_spawn = False
else:
snake_body.pop()

if not fruit_spawn:
fruit_position = [random.randrange(1, (window_x // 10)) * 10,
random.randrange(1, (window_y // 10)) * 10]

fruit_spawn = True
game_window.fill(black)

for pos in snake_body:
pygame.draw.rect(game_window, green, pygame.Rect(
pos[0], pos[1], 10, 10))

pygame.draw.rect(game_window, blue, pygame.Rect(
fruit_position[0], fruit_position[1], 10, 10))

# 遊戲結束條件
if snake_position[0] < 0 or snake_position[0] > window_x - 10:
game_over()
if snake_position[1] < 0 or snake_position[1] > window_y - 10:
game_over()

# 觸碰蛇身
for block in snake_body[1:]:
if snake_position[0] == block[0] and snake_position[1] == block[1]:
game_over()

# 連續顯示分數
show_score(1, white, 'times new roman', 20)

# 重新整理遊戲畫面
pygame.display.update()

# 每秒幀數/重新整理率
fps.tick(snake_speed)

 
 


(三) 程式原始碼及執行截圖


 

3. 實驗放至putty上執行

開啟華為雲伺服器

在putty上登陸

使用WinSCP上傳檔案

使用putty執行程式

4. 課程小結

    大一下選修的python,讓我第一次有了當一名程式設計師的感受,加上必修的C語言,計算機語言可以說是這個學期中最令我新奇同時又是最頭大的一門學科了。和身邊的程式設計大佬比起來,我像一個嬰兒,沒有任何的基礎和天賦,雖然如此,上課的時候一直跟著老師敲程式碼(雖然有的時候並不明白程式碼的用處),王老師教會了很多有趣的python知識:給小弟弟小妹妹的出題軟體,哈哈哈,還有王者榮耀的英雄分類,哈哈哈哈,將我們所學與興趣很好的結合起來,上老師的課確實是一種新奇快樂的體驗。下課寫實驗報告,做了許多有趣的實驗,使用socket搭建對話,以及爬取網頁等等。不知不覺python就結課了,想到看不見老師每節課都獨具創意的簽到手勢,竟莫名感到一絲憂傷,希望以後有緣還能有跟著王老師學習的機會。感謝老師帶我進入python的大門,帶我認識到程式設計的強大,我對計算機也不再是當初一無所知的狀態,人生苦短,我學python.未來的學習中我也一定會繼續學習python這項技能,最後感謝王老師的指導,感謝您用這麼有趣的方式為我開啟學習python的大門。

參考資料

https://blog.csdn.net/weixin_39850365/article/details/110909644

putty執行python程式碼_通過PuTTY用於SSH的Python指令碼

https://blog.csdn.net/adfass/article/details/116778535  pygame匯入和初始化