设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【Pygame 第7课】 多变的宿敌

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

21#
发表于 2016-7-8 18:04:42 |只看该作者
Yumiao_HyunMin 发表于 2016-7-8 13:27
请教一下先生,定义敌机速度时:self.speed = random.random() + 0.1
加0.1的意思是每一次重置速度时速度都 ...

对,避免随机出一个特别慢的值
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

6

积分

新手上路

Rank: 1

22#
发表于 2016-8-1 11:02:50 |只看该作者
请教下,为啥我的结果显示全局变量random未定义,然后就跑不起来,,
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

23#
发表于 2016-8-1 11:35:17 |只看该作者
captainooo 发表于 2016-8-1 11:02
请教下,为啥我的结果显示全局变量random未定义,然后就跑不起来,,

没有引用random,或者单词拼错了,还有可能你有文件命名成了random.py
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

6

积分

新手上路

Rank: 1

24#
发表于 2016-8-1 14:05:02 |只看该作者
crossin先生 发表于 2016-8-1 11:35
没有引用random,或者单词拼错了,还有可能你有文件命名成了random.py

问题已解决,其中一处单词多了个字母。感谢~
回复

使用道具 举报

0

主题

1

好友

114

积分

注册会员

Rank: 2

25#
发表于 2016-9-13 12:44:03 |只看该作者
cool!
  1. import pygame
  2. import random
  3. from sys import exit

  4. pygame.init()
  5. screen=pygame.display.set_mode((450,800),0,32)
  6. pygame.display.set_caption("plane game")
  7. background=pygame.image.load('back.jpg').convert()
  8. plane=pygame.image.load('plane.png').convert_alpha()

  9. class Bullet:
  10.     def __init__(self):
  11.         self.x=0
  12.         self.y=-1
  13.         self.image=pygame.image.load('bullet.png').convert_alpha()
  14.     def move(self):
  15.         if self.y<0:
  16.             mouseX,mouseY=pygame.mouse.get_pos()
  17.             self.x=mouseX-self.image.get_width()/2
  18.             self.y=mouseY-self.image.get_height()/2
  19.         else:
  20.             self.y-=5
  21. bullet = Bullet()

  22. class Enemy:
  23.     def restart(self):
  24.         self.x=random.randint(50,400)
  25.         self.y=random.randint(-200,-50)
  26.         self.speed=random.random()+0.1
  27.     def __init__(self):
  28.         self.restart()
  29.         self.image=pygame.image.load('enemy.png').convert_alpha()
  30.     def move(self):
  31.         if self.y<800:
  32.             self.y+=self.speed
  33.         else:
  34.             self.restart()
  35. enemy=Enemy()

  36. while True:
  37.     for event in pygame.event.get():
  38.         if event.type==pygame.QUIT:
  39.             pygame.quit()
  40.             exit()
  41.     screen.blit(background,(0,0))
  42.     bullet.move()
  43.     screen.blit(bullet.image,(bullet.x,bullet.y))
  44.     enemy.move()
  45.     screen.blit(enemy.image,(enemy.x,enemy.y))   
  46.     x,y=pygame.mouse.get_pos()
  47.     x-=plane.get_width()/2
  48.     y-=plane.get_height()/2
  49.     screen.blit(plane,(x,y))
  50.     pygame.display.update()


复制代码
回复

使用道具 举报

1

主题

0

好友

19

积分

新手上路

Rank: 1

26#
发表于 2018-1-30 10:53:06 |只看该作者
# -*- coding: utf-8 -*-
import pygame
from sys import exit
import random
from random import randint
class Bullet:
    def __init__(self):
        self.x = 0
        self.y = -1
        self.image = pygame.image.load('bullet.png').convert_alpha()
    def move(self):
        if self.y < 0:
            mouseX,mouseY = pygame.mouse.get_pos()
            self.x = mouseX - self.image.get_width()/2
            self.y = mouseY - self.image.get_height()/2
        else:
            self.y -= 5
class Enemy:
    def restart(self):
        self.x = random,randint(50,400)
        self.y = random.randint(-200,-50)
        self.speed = random.random() + 0.1
    def __init__(self):
        self.restart()
        self.image = pygame.image.load('enemy.png').convert_alpha()
    def move(self):
        if self.y < 800:
            self.y += self.speed
        else:
            self.restart()
pygame.init()
screen = pygame.display.set_mode((450,800), 0, 32)
pygame.display.set_caption("Hello, Queens!")
background = pygame.image.load('back.jpg').convert()
plane = pygame.image.load('plane.png').convert_alpha()
bullet = Bullet()
enemy = Enemy()
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
    screen.blit(background,(0,0))
    bullet.move()
    screen.blit(bullet.image,(bullet.x,bullet.y))
    enemy.move()
    screen.blit(enemy.image,(enemy.x,enemy.y))
    x,y = pygame.mouse.get_pos()
    x-=plane.get_width()/2
    y-=plane.get_height()/2
    screen.blit(plane,(x,y))
    pygame.display.update()

但是显示出错:    screen.blit(enemy.image,(enemy.x,enemy.y))
TypeError: invalid destination position for blit
请问先生
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

27#
发表于 2018-1-30 15:57:43 |只看该作者
python_dino 发表于 2018-1-30 10:53
# -*- coding: utf-8 -*-
import pygame
from sys import exit

把 (enemy.x,enemy.y) 输出来调试
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

44

积分

新手上路

Rank: 1

28#
发表于 2018-5-17 18:55:48 |只看该作者
先生有个问题   就是有时候敌机下落的速度特别快   反应不过来   然后random.random()是在(0,1)里面产生的吗? 能不能再控制一下速度
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

29#
发表于 2018-5-17 22:44:18 |只看该作者
少年与猫. 发表于 2018-5-17 18:55
先生有个问题   就是有时候敌机下落的速度特别快   反应不过来   然后random.random()是在(0,1)里面产生 ...

是0到1
嫌快你可以乘上 0.5
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

44

积分

新手上路

Rank: 1

30#
发表于 2018-5-18 22:03:24 |只看该作者
crossin先生 发表于 2018-5-17 22:44
是0到1
嫌快你可以乘上 0.5

我自己设了一个list..然后设了一些值在里面   我试试用乘的看看
回复

使用道具 举报

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

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

GMT+8, 2024-5-5 04:07 , Processed in 0.031692 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部