《《Python语言编程课程设计》课程设计报告模版.docx》由会员分享,可在线阅读,更多相关《《Python语言编程课程设计》课程设计报告模版.docx(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、实践课程目的1、通过综合实践练习,能够掌握 Python 基础语法,能够应用 Python 语言编程解决某一具体领域的应用问题。2、通过综合实践练习,能够理论联系实际,提升分析问题与解决问题的能力。二、设备与环境PC 机、Windows 操作系统、Python 3.7 软件等。三、项目设计内容1、课题名称强制表白神器2、程序功能通过Python 语句实现简单表白;通过设置按钮实现一个按钮躲避鼠标至随机点,一个按钮可以正常使用,不选择好呀无法关闭程序以达到强制表白的目的;通过 turtle 等导包辅助画出完整的爱心树加强表白时的浪漫气氛; 音乐的添加使得被表白者情绪高涨,心防减弱,更容易接受
2、表白。3、源程序代码import pygame# pygame 是一个设计用来开发游戏的 Python 模块,专为电子游戏设计。 包含图像、声音,在 SDL 库的基础上提供了各种接口,从而使用用户能够使用 python 语言创建各种各样的游戏或多媒体程序import random import time import turtle#Turtle 库是 Python 语言中一个很流行的绘制图像的函数库,根据一组函数指令的控制,在这个平面坐标系中移动,从而在爬行的路径上绘制图形。import multiprocessing import sys#该模块提供对解释器使用或维护的一些变量的访问,以及与
3、解释器强烈交互的函数from pygame.locals import *import matplotlib.pyplot as plt#坐标绘图WIDTH, HEIGHT = 640, 480BACKGROUND = (255,201, 174) #背景颜色# 按钮def button(text, x, y, w, h, color, screen): pygame.draw.rect(screen, color, (x, y, w, h)font = pygame.font.Font(./font/1.ttf, 20)#字体样式和大小textRender = font.render(tex
4、t, True, (0, 0, 0) textRect = textRender.get_rect()textRect.center = (x+w/2), (y+h/2)#按钮位置screen.blit(textRender, textRect)# 标题def title(text, screen, scale, color=(255, 0, 0):font = pygame.font.Font(./font/1.ttf, WIDTH/(len(text)*2) textRender = font.render(text, True, color)textRect = textRender.g
5、et_rect()textRect.midtop = (WIDTH/scale0, HEIGHT/scale1) screen.blit(textRender, textRect)# 生成随机的位置坐标def get_random_pos():x, y = random.randint(20, 620), random.randint(20, 460) return x, y# 点击喜欢按钮后显示的页面6 / 6def show_like_interface(text, screen, color=(255, 0, 0): screen.fill(BACKGROUND)font = pygam
6、e.font.Font(./font/5.ttf, WIDTH/(len(text)#字体属性textRender = font.render(text, True, color)textRect = textRender.get_rect() textRect.midtop = (WIDTH/2, HEIGHT/2-50) screen.blit(textRender, textRect) pygame.display.update()while True:for event in pygame.event.get(): if event.type = QUIT:pygame.quit()
7、sys.exit()def draw_arc(lv):for i in range(20):lv.right(10) lv.forward(2)#画爱心树上的爱心def draw_love(x, y):love = turtle.Turtle() love.hideturtle() love.up()love.goto(x, y)#爱心的坐标love.color(red, pink)#上色love.speed(100000000000)#画笔的速度love.pensize(2)#画笔粗细love.down()love.begin_fill()love.left(140)#画笔自右向左移动lov
8、e.forward(22)#画笔向上方移动画爱心draw_arc(love)love.left(120) draw_arc(love) love.forward(22) love.left(140)love.end_fill()#终止#爱心树干def draw_tree(branchLen, tur):if branchLen 5:if branchLen 20:tur.color(green)#短树杈判断,如果是为绿色tur.pensize(random.uniform(branchLen+5)/4-2, (branchLen+6)/4+5) tur.down()tur.forward(br
9、anchLen) draw_love(tur.xcor(), tur.ycor() tur.up()tur.backward(branchLen)#树干为棕色tur.color(brown)returntur.pensize(random.uniform(branchLen+5)/4-2, (branchLen+6)/4+5) tur.down()tur.forward(branchLen)angle = random.uniform(15, 45) tur.right(angle)draw_tree(branchLen-random.uniform(12, 16), tur) tur.lef
10、t(2*angle)draw_tree(branchLen-random.uniform(12, 16), tur) tur.right(angle)tur.up() tur.backward(branchLen)#爱心树实现函数def draw_main():Win = turtletur = turtle.Turtle() tur.hideturtle()tur.speed(10000000) tur.left(90)tur.up() tur.backward(200) tur.down()tur.color(brown)#树主干颜色tur.pensize(32)tur.forward(6
11、0) draw_tree(100, tur) Win.exitonclick()# 主函数def main():pygame.init()screen = pygame.display.set_mode(WIDTH, HEIGHT), 0, 32) pygame.display.set_caption(FROM 一个喜欢你很久的小姐姐)#窗口显示clock = pygame.time.Clock()pygame.mixer.music.load(./bg_music/1.mp3)#背景音乐存放地址加载背景音乐pygame.mixer.music.play(-1, 30.0)#背景音乐循环播放,
12、从音乐第 30 秒播放pygame.mixer.music.set_volume(0.25)#背景音乐音量unlike_pos_x = 330unlike_pos_y = 300unlike_pos_width = 100unlike_pos_height = 50like_pos_x = 180like_pos_y = 300like_pos_width = 100like_pos_height = 50 running = Truelike_color = (255,128, 255)while running:#运行程序screen.fill(BACKGROUND)img = pygam
13、e.image.load(./imgs/1.png)#背景中间的图片imgRect = img.get_rect()imgRect.midtop = WIDTH/2, HEIGHT/4 screen.blit(img, imgRect)for event in pygame.event.get():#按钮随机躲避鼠标设置if event.type = pygame.MOUSEBUTTONDOWN: mouse_pos = pygame.mouse.get_pos()if mouse_pos0 like_pos_x-5 and mouse_pos1 like_pos_y-5: like_colo
14、r = BACKGROUNDrunning = False mouse_pos = pygame.mouse.get_pos()if mouse_pos0 unlike_pos_x-5 and mouse_pos1 unlike_pos_y-5: while True:unlike_pos_x, unlike_pos_y = get_random_pos()if mouse_pos0 unlike_pos_x-5 and mouse_pos1 unlike_pos_y-5: continuebreaktitle(小哥哥,我观察你很久了, screen, scale=2, 10) title(做
15、我男朋友好不好呀, screen, scale=2, 6)button(好呀, like_pos_x, like_pos_y, like_pos_width, like_pos_height, like_color, screen)button(算了吧, unlike_pos_x, unlike_pos_y, unlike_pos_width, unlike_pos_height, (255, 128, 255), screen) pygame.display.flip()#更新整个待显示的 Surface 对象到屏幕上pygame.display.update()#更新部分界面显示clock
16、.tick(60)process1 = multiprocessing.Process(target=draw_main) process1.start()show_like_interface(我就知道小哥哥你也喜欢我, screen, color=(255, 0,0)if name main()= main :4、程序运行结果运行首界面,图 4-1:图 4-1 首界面点击“算了吧”,“算了吧”随机移动,无法点击,并且无法关闭窗口,如图 4-2:图 4-2只能点击“好吧”,出现如下图 4-3 页面:图 4-3紧接着,出现画出“表白树”的过程,如图 4-4:图 4-4最后形成如图 4-5 “表
17、白树”:图 4-5 “表白树”四、项目设计总结此次课程设计“Python 表白神器”基本完成。我更加扎实的掌握了有关 Python 的知识, 在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检验修改环节,本身就是在践行“过而能改,善莫大焉” 的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在不懈的努力下, 终于迎刃而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功, 收获喜悦,也永远不可能得到社会及他人对你的认可!课程设计不仅是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门辩思课,给了我很多思路,给了我莫大的空间。 项目中仍然有一些不足之处,“表白树”界面与主界面分开了,应该使“表白树”界面体现在主界面中。我会不断学习,不断改进。
限制150内