请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

微信公众号:
crossincode
 找回密码
 立即加入
楼主: crossin先生

【Pygame 第5课】 游戏中的运动

[复制链接]

158

主题

37

好友

8万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2016-2-2 11:51:24 |显示全部楼层
catherinemic 发表于 2016-2-1 14:28
加了一些限制让飞机不飞出窗外,外加从飞机中心飞出的三行子弹,做出来好有成就感呀~~ ...

#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

36

积分

新手上路

Rank: 1

发表于 2016-4-1 16:29:28 |显示全部楼层
C老师,我拷贝您的代码,怎么感觉子弹好快啊,没有一颗子弹消失另一颗才出现的感觉,只有把速度降到‘1’的时候,才好一些,您的电脑速度是‘5’的时候效果啥样啊,是不是感觉到一串子弹的样子。
回复

使用道具 举报

158

主题

37

好友

8万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2016-4-1 17:34:08 |显示全部楼层
shangyaoshi 发表于 2016-4-1 16:29
C老师,我拷贝您的代码,怎么感觉子弹好快啊,没有一颗子弹消失另一颗才出现的感觉,只有把速度降到‘1’的 ...

这个代码里没有考虑程序的运行速度对帧数的影响。所以应该是你电脑上帧数高,子弹就快。
通常游戏里会把每一帧的时间考虑进去,保证速度一致
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

36

积分

新手上路

Rank: 1

发表于 2016-4-4 16:33:02 |显示全部楼层
crossin先生 发表于 2016-4-1 17:34
这个代码里没有考虑程序的运行速度对帧数的影响。所以应该是你电脑上帧数高,子弹就快。
通常游戏里会把 ...

晓得啦,谢谢c老师指点。
回复

使用道具 举报

0

主题

0

好友

46

积分

新手上路

Rank: 1

发表于 2016-7-1 16:34:52 |显示全部楼层
太好玩了哈哈哈~继续学习下去!
回复

使用道具 举报

0

主题

0

好友

4

积分

新手上路

Rank: 1

发表于 2016-8-23 16:09:39 |显示全部楼层
import pygame
#导入pygame库
from sys import exit
#向sys模块接一个exit函数用来退出程序

pygame.init()
#初始化pygame,为使用硬件做准备

screen = pygame.display.set_mode( (450, 800), 0, 32)
#创建一个窗口,窗口大小和背景图片一样大小

pygame.display.set_caption('Hello, World')
#设置窗口标题

background = pygame.image.load('background.jpg').convert()
#加载病转换图片

plane = pygame.image.load('plane.png').convert()
#加载飞机图片

bullet = pygame.image.load('bullet.png').convert_alpha()
#加载子弹图片
bullet_x = 0
bullet_y = 0
#初始化子弹的位置

while True:
#游戏主循环
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
        #接受到退出事件就退出程序
            pygame.quit()
            exit()
    screen.blit(background, (0, 0))
    #将背景图画上去

    x,y = pygame.mouse.get_pos()
    #获取鼠标位置
    if bullet_y < 0:
    #如果子弹超出屏幕范围
        bullet_x = x   #- bullet.get_width()   这里这样改也可以?!!
        bullet_y = y   #- bullet.get_height()  
        #把子弹的中心位置设为鼠标坐标
    else:
        bullet_y -= 5
        #子弹位置往上移
    screen.blit(bullet, (bullet_x, bullet_y) )
    x -= plane.get_width() / 2
    y -= plane.get_height() / 2
    #计算飞机左上角位置
    screen.blit(plane, (x, y))
    #把飞机画到屏幕上
    pygame.display.update()
    #刷新一下图片
回复

使用道具 举报

0

主题

1

好友

114

积分

注册会员

Rank: 2

发表于 2016-9-10 00:59:44 |显示全部楼层
改了下子弹的X坐标,变成散弹了
  1. # -*- coding: utf-8 -*-
  2. import pygame
  3. from sys import exit
  4. pygame.init()
  5. screen = pygame.display.set_mode((450, 800), 0, 32)
  6. pygame.display.set_caption("Hello, World!")
  7. background = pygame.image.load('back.jpg').convert()
  8. plane = pygame.image.load('plane.png').convert_alpha()
  9. bullet=pygame.image.load('bullet.png').convert_alpha()
  10. bullet1=bullet
  11. bullet2=bullet
  12. bullet_x=0
  13. bullet_y=-1
  14. bullet1_x=0
  15. bullet1_y=0
  16. bullet2_x=0
  17. bullet2_y=0
  18. while True:
  19.     for event in pygame.event.get():
  20.         if event.type == pygame.QUIT:
  21.             pygame.quit()
  22.             exit()
  23.     screen.blit(background, (0,0))
  24.     x, y = pygame.mouse.get_pos()
  25.     if bullet_y<0:
  26.         bullet_x=x-bullet.get_width()/2
  27.         bullet_y=y-bullet.get_height()/2
  28.         bullet1_x=x-bullet.get_width()/2-23
  29.         bullet1_y=y-bullet.get_height()/2
  30.         bullet2_x=x-bullet.get_width()/2+23
  31.         bullet2_y=y-bullet.get_height()/2
  32.     else:
  33.         bullet_y-=2
  34.         bullet1_y-=2
  35.         bullet1_x-=0.5
  36.         bullet2_y-=2
  37.         bullet2_x+=0.5
  38.     screen.blit(bullet,(bullet_x,bullet_y))
  39.     screen.blit(bullet1,(bullet1_x,bullet1_y))
  40.     screen.blit(bullet2,(bullet2_x,bullet2_y))
  41.     x-= plane.get_width() / 2
  42.     y-= plane.get_height() / 2
  43.     #print (x,y,bullet_x,bullet_y)
  44.     screen.blit(plane, (x,y))
  45.     pygame.display.update()
复制代码
回复

使用道具 举报

158

主题

37

好友

8万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2016-9-11 00:23:19 |显示全部楼层
Phoestia 发表于 2016-9-10 00:59
改了下子弹的X坐标,变成散弹了

有点意思
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

26

积分

新手上路

Rank: 1

发表于 2016-12-7 21:38:51 |显示全部楼层
鼠标操控模式,但是这跟线太难看了……不知道有没方法弄得好看点

#-*-coding:utf-8-*-
import pygame
from sys import exit

pygame.init()
screen=pygame.display.set_mode((450,800),0,32)
pygame.display.set_caption("Plane")
background=pygame.image.load(r"C:\pythonexam\game\image\background.jpg").convert()
plane=pygame.image.load(r"C:\pythonexam\game\image\plane.png").convert_alpha()
bullet=pygame.image.load(r"C:\pythonexam\game\image\bullet.png").convert_alpha()

while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            exit()
    screen.blit(background,(0,0))

    x,y=pygame.mouse.get_pos()
    x_plane=x-plane.get_width()/2
    y_plane=y-plane.get_height()/2
    y_value=y
    x_bullet=x-bullet.get_width()/2
    y_bullet=y-plane.get_height()/2
    screen.blit(plane,(x_plane,y_plane))
    if event.type==pygame.MOUSEBUTTONDOWN:
        for i in range(y_value):
            if y_bullet<0:
                y_bullet=y-bullet.get_width()/2
            if y_bullet>0:
                y_bullet-=1
            screen.blit(bullet,(x_bullet,y_bullet))
            pygame.display.update()
    pygame.display.update()





回复

使用道具 举报

1

主题

0

好友

145

积分

注册会员

Rank: 2

发表于 2017-3-5 17:13:16 |显示全部楼层
关于文件路径可以直接用 斜杠/ 啊,斜杠/不需要转义,而反斜杠\是需要转义的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|Archiver|手机版|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2020-10-24 11:14 , Processed in 0.071618 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部