双人对战乒乓球小游戏的实现

通俗易懂的文章

结尾有完整代码

1,创建游戏窗口

game.mainloop()的作用是保持窗口不结束,只有我们自己想结束的时候才可以关闭

bgcolor  创建背景颜色

2,创建第一个球拍speed(0)让球拍快速移动

shape 控制形状

goto   让球拍到达指定坐标

结果如图所示3,让球拍动起来

先定义两个向上移动,向下移动的函数

y=xm.ycor()    获取当前球拍位置

y=y+5  每按一次w  向上走5
y=y-5  每按一次s 向下走5

到此球拍就可以移动了

4,创建第二个球拍

和第一个球拍一样的方法

结果如图所示5,创建乒乓球

和创建球拍大同小异

但省去了隐藏的步骤

同时形状设为圆形

6,让乒乓球动起来

通过while循环让乒乓球一直动起来,直到程序被我们结束

pp.dx   pp.dy  为乒乓球的运动速度,可以动过改变数值来控制快慢

7,防止乒乓球出界

上一步乒乓球会直接出界,现在就要让他可以反弹

如果乒乓球碰到上下边界,则会改变y坐标方向的运动速度,

具体代码如图所示

8.使乒乓球更加流畅

game.tracer(0)

使游戏不在后台刷新;

game.update()

将此代码放在while循环中,从而达到流畅的效果

更改后的代码如图所示

9,让球拍接球

根据所设定的球拍大小,及乒乓球大小,来找对对应的边界值

通过if判断来实现拍碰球,球反弹

pp.setx(369)是为了防止球与拍发生粘连问题

10,判断球左右出界,并加分

添加xm和rh得分的变量

球若出界则加分11,添加分数

使用turtle创建一个画笔,并将其隐藏

注:这里使用write_score()是为了在一开始就显示分数0 :0

定义write_score()函数,来记录分数

pen.clear()是为了清除上一次分数的笔迹

score_text = "xm:{}   rh:{}".format(xm_score, rh_score)

将xm,rh当作变量,将xm_score, rh_score填充进{}中;;;;

每一次出界都要进行一次write_score()操作

到这里游戏已经基本完成

但我们发现每次运行完之后都会出现报错

我们可以做一些更改

并将最后面的   game.mainloop()    注释掉就OK啦

接下来是最终代码

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!对于实现双人对战乒乓球的游戏,你可以使用Python的图形库来创建游戏界面,并使用键盘输入来控制乒乓球拍的移动。下面是一个简单的示例代码,可以帮助你开始: ```python import pygame from pygame.locals import * # 初始化 pygame.init() width, height = 640, 480 screen = pygame.display.set_mode((width, height)) pygame.display.set_caption("双人对战乒乓球") # 定义球拍类 class Paddle: def __init__(self, x, y): self.rect = pygame.Rect(x, y, 20, 60) def move(self, dy): self.rect.move_ip(0, dy) def draw(self): pygame.draw.rect(screen, (255, 255, 255), self.rect) # 定义球类 class Ball: def __init__(self, x, y): self.rect = pygame.Rect(x, y, 10, 10) self.speed_x = 3 self.speed_y = 3 def update(self): self.rect.move_ip(self.speed_x, self.speed_y) if self.rect.left < 0 or self.rect.right > width: self.speed_x *= -1 if self.rect.top < 0 or self.rect.bottom > height: self.speed_y *= -1 def draw(self): pygame.draw.rect(screen, (255, 255, 255), self.rect) # 创建球拍和球的实例 paddle1 = Paddle(20, height // 2 - 30) paddle2 = Paddle(width - 40, height // 2 - 30) ball = Ball(width // 2 - 5, height // 2 - 5) # 游戏循环 running = True clock = pygame.time.Clock() while running: clock.tick(60) for event in pygame.event.get(): if event.type == QUIT: running = False keys = pygame.key.get_pressed() if keys[K_w]: paddle1.move(-3) if keys[K_s]: paddle1.move(3) if keys[K_UP]: paddle2.move(-3) if keys[K_DOWN]: paddle2.move(3) ball.update() screen.fill((0, 0, 0)) paddle1.draw() paddle2.draw() ball.draw() pygame.display.flip() pygame.quit() ``` 这个示例使用了Pygame库来实现游戏逻辑和图形化界面。按下"W"和"S"键可以移动左侧球拍,按下上方向键和下方向键可以移动右侧球拍。希望这个示例能帮到你!如有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值