python游戏练手--乒乓球

啥也不说了,就是个练手,丑是丑了一点,但是还可以抢救一下的

# -*- coding: utf-8 -*-import pygame as pgfrom pygame.locals import *    #将pygame所有常量导入,如后面的QUITfrom time import sleepimport sys

pg.init()                          #初始化,如果没有的话字体会报错等等scr=pg.display.set_mode((600,550))   #设置屏幕大小pg.display.set_caption(("打乒乓球"))   #设置屏幕标题pp=255,140,0                     #red是一个元组,表示乒乓球的RGB颜色green=0,255,0white=255,255,255cs=225,121,21               #橙色

# 现在我们设计一下乒乓球的运动方式,乒乓球在屏幕内运动,# 因此我们将乒乓球的坐标设置为(x,y)设置初速度vx,vy,# 当乒乓球到达屏幕边缘的时候速度取反,也就是乒乓球到达左右两边缘的时候vx取反,上下边缘的时候vy取反。# 再设置a,a代表乒乓板的x坐标值,因为乒乓板y坐标值是固定的x=120y=120vx=1vy=1a=200

zt1=pg.font.SysFont(‘simhei‘,24)#常规黑体zt2=pg.font.SysFont(‘simhei‘,20)

#设计一个函数,在游戏屏幕上打印文本,代码表示先把文本转换成一个位图然后打印在屏幕上#打印文本需要打印的具体坐标和文本颜色,字体等参数def printtext(font,text,x,y,color):   img=font.render(text,True,color)#转换为位图   scr.blit(img,(x,y))

#设置得分,基础记分量c=0   #c是加速器,如果接了10次,那么加速fs=0   #fs是分数,接到一次乒乓球就加分k=1  #基础加分量

# 接下来是游戏的主要代码了,pygame采用帧和轮询的方式,帧是指会不断刷新,也就是while True循环,轮询是不断的询问用户的输入。在下面代码中,会不断获取鼠标具体坐标和QUIT事件是否发生。# Scr.fill会用RGB值为(199,21,133)的颜色刷新屏幕,以后画圆写字都在这基础上,下一次循环后又刷新。# 因此在屏幕中乒乓球和乒乓板就会动态呈现出来while True:    scr.fill((199,21,133))    for eve in pg.event.get():        if eve.type == QUIT:    #点击左上角的×            sys.exit()         #如果无效,可以试试exit()函数    mx,my=pg.mouse.get_pos()     #获得鼠标的x,y坐标    a=mx   #鼠标x坐标就是乒乓板的坐标,因此移动鼠标乒乓板也移动#接下来是画乒乓球和画乒乓板了,我们可以简化为圆形和矩形    pg.draw.circle(scr,pp,(x,y),40,0)#厚度为0 ,表示实心    pg.draw.rect(scr,green,(a,530,100,20),0)#矩形的长和宽是100和20#考虑乒乓球的运动,如果乒乓球碰到左右屏幕边缘,vx取反,#碰到上边缘或者碰到乒乓板的时候,vy取反,#其余情况表示乒乓板没有接触到乒乓球,跳出循环,游戏结束    x=x+vx    y=y+vy    if x>550 or x<40:        vx=-vx    if  y<40:        vy=-vy    if y>510 and abs(a-x+50)<50:        if vy>0:            vy=-vy        else:pass        c=c+1     #每接到3次后乒乓球加速        fs=fs+k    #加分        if c>=3:            c=0            k=k+k  #乒乓球加速后记分量双倍            if vx>0:  #加速                vx=vx+1            else:                vx=vx-1        else:pass    elif y>510 and abs(a-x+50)>50:        break    sleep(0.005)  #休眠一定时间,不然乒乓球速度依然很快    printtext(zt1,"移动鼠标控制乒乓板左右移动",20,30,white)    printtext(zt2,"得分",550,12,cs)    printtext(zt2,str(fs),560,32,cs)    pg.display.update()

#在循环结束后就是前面乒乓板没有接触到乒乓球后发生的情况,最后是游戏结束的代码,毕竟这游戏靠看得分看成败scr.fill((211,21,33))   #游戏结束后全屏改变颜色zt3=pg.font.SysFont(‘simhei‘,120)zt4=pg.font.SysFont(‘simhei‘,60)printtext(zt3,"游戏结束",60,120,white)printtext(zt4,‘得分: ‘+str(fs),120,400,white)pg.display.update()



原文地址:https://www.cnblogs.com/fatyao/p/11143684.html

时间: 2024-10-27 03:27:20

python游戏练手--乒乓球的相关文章

python游戏练手--贪吃蛇

啥也不说了,就是个小练习 #!/usr/bin/env python# coding=utf-8import pygameimport sysimport random # 全局定义,screen的长和宽SCREEN_X = 600SCREEN_Y = 600 # 蛇类# 点以25为单位class Snake(object): # 定义一个类--Snake,默认使用object类,如果你有更好的话,可以替换它 # 初始化各种需要的属性 [开始时默认向右/身体块x5] def __init__(s

python游戏练手--猜数字

#!/usr/bin/env python#coding=utf-8 import random #将玩家猜测过的数字保存到这个变量中,因为玩家还没有做过任何猜测,所以保存的是整数0guessesTaken = 0 print('Hello! What is your name?')MyName = input() #判断输入到MyName中的值是否存在#不存在的话,就告诉用户需要输入字符串,不能直接回车或者空格代替if MyName == "": print('Hello! What

PYTHON POST练手

闲着无事跟着某同学在hackinglab.cn上做两道脚本题练手 就是模拟POST发包而已 4-大致上是每次访问index.php相对应一个验证码,只要不重新访问这个页面,用同一个验证码即可.于是代码模拟访问这个页面,获取cookie,再暴力密码post 11-思路相近,查看源码推测是post到vcode.php对应一个验证码,所以暴力之前post到这个php一次 PS:需要暴力两个电话号码 #!/bin/env python import urllib, urllib2, cookielib

小游戏练手2——跳房子

[游戏界面] 优酷视频展示地址: http://v.youku.com/v_show/id_XOTE2MjM2MTAw.html 游戏截图: [游戏简介] 跳房子,俗称跳飞机.修天堂,是80.90后小孩子都玩过的童年游戏.希望通过这款手机游戏能让大家找回童年的美好回忆. 本游戏基本模拟现实中跳房子游戏的玩法,需要玩家对方向及力度有一定的把控.比如扔沙包的时候需要判断箭头方向.控制按钮力度,将它扔到红色区域:之后跳格子的时候,需要控制每一步的力度,玩起来还是很虐心的(美好的回忆总是痛嘛). 谨以此

游戏练手

游戏 战船——创建两块游戏面板,玩家各占一边,在上面放置一些战船,玩家看不到对方的面板.每艘船都占几个格子,玩家轮流攻击某个格子,如果格子上有船,那就命中目标,否则就是未命中.当一艘船所占的所有格子都被攻击命中了,那么船就被击沉.谁先将对方战船全部击沉就获胜. 象棋跳棋——象棋或者跳棋游戏.可以试着做成可以联网玩,用图形用户界面来实现悔棋.保存走棋过程并且可以回放. 刽子手——从文件中随机选择一个单词,让玩家猜单词中的字母.旁边是一幅隐藏的行绞刑的画,猜错一个单词,画就显示出一部分.画全部显示出

小游戏练手1——雷速小子

[游戏界面] 优酷视频展示地址: http://v.youku.com/v_show/id_XNzE5NzI0NDAw.html 游戏截图: [游戏简单介绍] <雷速小子>火爆登场! 各位亲爱的玩家是否在flappy bird中被管道虐得非常慘,复仇的机会来了!<雷速小子>是一款休闲益智游戏.您能拖动小鸟的突击,吃掉道具.变身暴走的雷速小子.将深深伤害过你的管道通通消灭掉! 伴随着激昂的音乐,随着关卡提升,管道的速度也将提升.游戏精彩刺激.快来操纵<雷速小子>向管道发起

day-1.python初学者练手题

1.编写一个名为right_justify的函数,函数接受一个名为``s``的字符串作为形参, 并在打印足够多的前导空格(leading space)之后打印这个字符串,使得字符串的最后一个字母位于显示屏的第70列. def right_justify(s): length = len(s) lspace = 70 - length so = ' ' * lspace + s print(so) right_justify('dean') 2.函数对象是一个可以赋值给变量的值,也可以作为实参传递

Python之路【第二十四篇】:Python学习路径及练手项目合集

Python学习路径及练手项目合集 Wayne Shi· 2 个月前 参照:https://zhuanlan.zhihu.com/p/23561159 更多文章欢迎关注专栏:学习编程. 本系列Python技术路径中包含入门知识.Python基础.Web框架.基础项目.网络编程.数据与计算.综合项目七个模块.路径中的教程将带你逐步深入,学会如何使用 Python 实现一个博客,桌面词典,微信机器人或网络安全软件等.完成本路径的基础及项目练习,将具备独立的Python开发能力. 完整的Python学

70个Python练手项目

前言: 不管学习那门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说大家都知道学编程语言一定要做项目才行. 这里整理了70个Python实战项目列表,都有完整且详细的教程,你可以从中选择自己想做的项目进行参考学习练手,你也可以从中寻找灵感去做自己的项目. 70个Python项目列表: 1.[Python 图片转字符画]2.[200行Python代码实现2048]3.[Python3 实现火车票查询工具]4.[高德API+Python解决租房问题 ]5.[Python3 色情图