bullet.py

import pygame
import random
import math
#import time
pygame.init()

display_width=800
display_height=600

black=(0,0,0)
white=(255,255,255)
red=(255,0,0)
green=(0,255,0)
purple=(238,130,238)
gameDisplay=pygame.display.set_mode((display_width,display_height))

pygame.display.set_caption('A bit Racey')

clock=pygame.time.Clock()


gameDisplay.fill(white)

carImg_orig=pygame.image.load('car0.jpg')
carImg_new1=pygame.image.load('car1.jpg')
carImg_new2=pygame.image.load('car2.jpg')
carImg_new3=pygame.image.load('car3.jpg')

carImg_orig2=pygame.image.load('car20.jpg')
carImg_new21=pygame.image.load('car21.jpg')
carImg_new22=pygame.image.load('car22.jpg')
carImg_new23=pygame.image.load('car23.jpg')

carImg_orig3=pygame.image.load('car30.jpg')
carImg_new31=pygame.image.load('car31.jpg')

carImg_orig4=pygame.image.load('car40.jpg')


carImg_orig.set_colorkey(white)
carImg_new1.set_colorkey(white)
carImg_new2.set_colorkey(white)
carImg_new3.set_colorkey(white)

carImg_orig2.set_colorkey(white)
carImg_new21.set_colorkey(white)
carImg_new22.set_colorkey(white)
carImg_new23.set_colorkey(white)

carImg_orig3.set_colorkey(white)
carImg_new31.set_colorkey(white)

carImg_orig4.set_colorkey(white)


carlist=[]
carlist.append(carImg_orig)
carlist.append(carImg_new1)
carlist.append(carImg_new2)
carlist.append(carImg_new3)

carlist.append(carImg_orig2)
carlist.append(carImg_new21)
carlist.append(carImg_new22)
carlist.append(carImg_new23)


carlist.append(carImg_orig3)
carlist.append(carImg_new31)

carlist.append(carImg_orig4)
  
  
all_sprites=pygame.sprite.Group()


class car(pygame.sprite.Sprite):
    List=pygame.sprite.Group()
    def __init__(self,x,y,plusnum):
        pygame.sprite.Sprite.__init__(self)
        car.List.add(self)
        self.imageorig=random.choice(carlist)
        self.image=self.imageorig.copy()
        self.rect=self.image.get_rect()
        self.rect.centerx=x+100
        self.rect.centery=y+100
        self.x=x+100
        self.y=y+100
        self.mask = pygame.mask.from_surface(self.image)
        all_sprites.add(self)
        self.rot=0
        self.passcount=0
        #self.last_update=pygame.time.get_ticks()
        self.plusnum=plusnum
        #print(self.plusnum)
        self.atnum=0
        #print(self.atnum)
    
    
    def rotate(self):
        #n=random.randrange(1,4)
        #now=pygame.time.get_ticks()
        #if now-self.last_update>50:
            #self.last_update=now
        self.rot=(self.rot+90)%360
        new_image=pygame.transform.rotate(self.imageorig,self.rot)
        #old_center=self.rect.center
        self.image=new_image
        self.mask = pygame.mask.from_surface(self.image)
        #self.image.set_colorkey(white)
        #self.rect=self.image.get_rect()
        #self.rect.center=old_center
        print("rotate")
    def nearbyrotate(self):
        nearbylist=[]
        for carname in car.List:
            
            if carname.x==self.x:
                if carname.y-self.y==199 or carname.y-self.y==-199:
                    nearbylist.append(carname)
            if carname.y==self.y:
                if carname.x-self.x==199 or carname.x-self.x==-199:
                    nearbylist.append(carname)
        print(str(nearbylist))
        for carnearby in nearbylist:
            carnearby.rotate()
            print("nearby rotate")
        
        
      
   
                
        




enemy5Img='5.jpg'
enemy1Img='1.jpg'

enemy3Img='3.jpg'
enemy7Img='7.jpg'
#enemy5Img.set_colorkey(white)
#enemy1Img.set_colorkey(white)

#enemy3Img.set_colorkey(white)
#enemy7Img.set_colorkey(white)
enemylistred=[]
#enemylistred.append(enemy5Img)
enemylistred.append(enemy1Img)
enemylistblack=[]
enemylistblack.append(enemy3Img)
#enemylistblack.append(enemy7Img)


import os
import string
class enemy(pygame.sprite.Sprite):
    List=pygame.sprite.Group()
    enemycount=1
    def __init__(self,x,y,listname):
        pygame.sprite.Sprite.__init__(self)
        enemy.List.add(self)
        file=random.choice(listname)
        #print(file)
        
        filename=os.path.splitext(file)[0]
        #print(filename)
        self.intfilename=int(filename)
        
    
        #resultname=int(filename)+10
        #print(resultname)
     
        self.imageorig=pygame.image.load(file)
        self.imageorig.set_colorkey(white)
        self.image=self.imageorig.copy()
        self.image.set_colorkey(white)
        self.rect=self.image.get_rect()
        self.rect.centerx=x+100
        self.rect.centery=y+100
        #self.x=x+100
        #self.y=y+100
        #all_sprites.add(self)
        self.mask = pygame.mask.from_surface(self.image)
        self.last=pygame.time.get_ticks()
        
        enemy.enemycount+=1
        self.listname=listname

        self.hittx=0
        self.hitty=0
        #if listname==enemylistred:
            #self.listnamered=enemylistred
            #self.listnameblack=[]
        #else:
            #self.listnameblack=enemylistblack
            #self.listnamered=[]

    def move(self):
       
        
        at=pygame.sprite.spritecollide\
            (self,car.List,False)
        for att in at:
            att.passcount+=1
            
            
                            

            
                        
            
            
            
#rotateall寮€濮�
            def rotateall():
                    att.rotate()
                    att.nearbyrotate()
                    
                    car.List.remove(att)
                    hits=pygame.sprite.spritecollide\
                       (att,car.List,False,pygame.sprite.collide_mask)
                    car.List.add(att)
                    if  hits==[]:
                        att.rotate()
                        
                        car.List.remove(att)
                        hits=pygame.sprite.spritecollide\
                           (att,car.List,False,pygame.sprite.collide_mask)
                        car.List.add(att)
                        if  hits==[]:
                           rotateall()
                        else:
                            car.List.remove(att)
                            hits=pygame.sprite.spritecollide\
                                (att,car.List,False,pygame.sprite.collide_mask)
                            car.List.add(att)

                            List=[] 
                            for hit in hits:
                                #print(hit.x,hit.y)
                   
                                List.append(hit)
                            hitt=random.choice(List)
                            #att.atnum=att.atnum-1
                            #hitt.atnum=hitt.atnum+1
                            #print(hitt.atnum)
                            
                            
                                #if self.listname==enemylistred:
                                    #self.rect.centerx=hitt.x-40
                                    #self.rect.centery=hitt.y
                                #if self.listname==enemylistblack:
                                    #self.rect.centerx=hitt.x+40
                                    #self.rect.centery=hitt.y
                            #else:
                                #self.rect.centerx=hitt.x
                                #self.rect.centery=hitt.y


                            self.rect.centerx=hitt.x
                            self.rect.centery=hitt.y

                            self.hittx=hitt.x
                            self.hitty=hitt.y
                            enemy.List.remove(self)
                            enemyhits=pygame.sprite.spritecollide\
                                (self,enemy.List,False,pygame.sprite.collide_mask)
                            enemy.List.add(self)
                            if enemyhits==[]:
                               att.atnum=1
                            else:
                               att.atnum=2
                               if self.listname==enemylistred:
                                  print(50)
                                  self.rect.centerx=hitt.x-40
                                  self.rect.centery=hitt.y
                               else:
                                    print(200)
                                    self.rect.centerx=hitt.x+40
                                    self.rect.centery=hitt.y
                                    print(100)
                            #print(hitt.plusnum)
                            #print(self.intfilename)
                            resultintfilename=self.intfilename+hitt.plusnum
                            
                            #print(resultintfilename)
                            resultstrfilename=str(resultintfilename)
                     
                            self.imageorig=pygame.image.load(resultstrfilename+'.jpg')
                            self.imageorig.set_colorkey(white)
                            self.image=self.imageorig.copy()
                            self.image.set_colorkey(white)
                            print("moved")
                            #print(self.rect.centerx,self.rect.centery)
                            #time.sleep(1)
                    else:
                            car.List.remove(att)
                            hits=pygame.sprite.spritecollide\
                                (att,car.List,False,pygame.sprite.collide_mask)
                            car.List.add(att)

                            List=[] 
                            for hit in hits:
                                #print(hit.x,hit.y)
                   
                                List.append(hit)
                            hitt=random.choice(List)
                            #att.atnum=att.atnum-1
                            #hitt.atnum=hitt.atnum+1
                            #print(hitt.atnum)
                            
                                #if self.listname==enemylistred:
                                    #self.rect.centerx=hitt.x-40
                                    #self.rect.centery=hitt.y
                                #if self.listname==enemylistblack:
                                    #self.rect.centerx=hitt.x+40
                                    #self.rect.centery=hitt.y
                            #else:
                                #self.rect.centerx=hitt.x
                                #self.rect.centery=hitt.y
                            self.rect.centerx=hitt.x
                            self.rect.centery=hitt.y


                            self.hittx=hitt.x
                            self.hitty=hitt.y
                            enemy.List.remove(self)
                            enemyhits=pygame.sprite.spritecollide\
                                (self,enemy.List,False,pygame.sprite.collide_mask)
                            enemy.List.add(self)
                            if enemyhits==[]:
                               att.atnum=1
                            else:
                               att.atnum=2 
                               if self.listname==enemylistred:
                                  print(50)
                                  self.rect.centerx=hitt.x-40
                                  self.rect.centery=hitt.y
                               else:
                                    print(200)
                                    self.rect.centerx=hitt.x+40
                                    self.rect.centery=hitt.y
                                    print(100)
                            #print(hitt.plusnum)
                            #print(self.intfilename)
                            resultintfilename=self.intfilename+hitt.plusnum
                            #print(resultintfilename)
                            resultstrfilename=str(resultintfilename)
                     
                            self.imageorig=pygame.image.load(resultstrfilename+'.jpg')
                            self.imageorig.set_colorkey(white)
                            self.image=self.imageorig.copy()
                            self.image.set_colorkey(white)
                            print("moved")
                            #print(self.rect.centerx,self.rect.centery)
                            #time.sleep(1)    
#rotateall缁撴潫
            if att.passcount==3:
                    rotateall()
                    for cars in car.List:
                        cars.passcount=0

          
            car.List.remove(att)
           
            hits=pygame.sprite.spritecollide\
                (att,car.List,False,pygame.sprite.collide_mask)
            car.List.add(att)
            if  hits==[]:
               
                
                
                rotateall()
                 
                
            else:
                 
                     car.List.remove(att)
                     hits=pygame.sprite.spritecollide\
                           (att,car.List,False,pygame.sprite.collide_mask)
                     car.List.add(att)

                     List=[] 
                     for hit in hits:
                         #print(hit.x,hit.y)
                   
                         List.append(hit)
                     hitt=random.choice(List)
                     #att.atnum=att.atnum-1
                     #hitt.atnum=hitt.atnum+1
                     #print(hitt.atnum)
                     
                                #if self.listname==enemylistred:
                                    #self.rect.centerx=hitt.x-40
                                    #self.rect.centery=hitt.y
                                #if self.listname==enemylistblack:
                                    #self.rect.centerx=hitt.x+40
                                    #self.rect.centery=hitt.y
                            #else:
                                #self.rect.centerx=hitt.x
                                #self.rect.centery=hitt.y
                     self.rect.centerx=hitt.x
                     self.rect.centery=hitt.y


                     self.hittx=hitt.x
                     self.hitty=hitt.y
                     enemy.List.remove(self)
                     enemyhits=pygame.sprite.spritecollide\
                                (self,enemy.List,False,pygame.sprite.collide_mask)
                     enemy.List.add(self)
                     if enemyhits==[]:
                        att.atnum=1
                     else:
                        att.atnum=2
                        if self.listname==enemylistred:
                             print(50)
                             self.rect.centerx=hitt.x-40
                             self.rect.centery=hitt.y
                        else :
                              print(200)
                              self.rect.centerx=hitt.x+40
                              self.rect.centery=hitt.y
                              print(100)


                     #print(hitt.plusnum)
                     #print(self.intfilename)
                     resultintfilename=self.intfilename+hitt.plusnum
                     #print(resultintfilename)
                    
                     
                     resultstrfilename=str(resultintfilename)
                     
                     self.imageorig=pygame.image.load(resultstrfilename+'.jpg')
                     self.imageorig.set_colorkey(white)
                     self.image=self.imageorig.copy()
                     self.image.set_colorkey(white)
                     print("moved")
                     #print(self.rect.centerx,self.rect.centery)
                     #time.sleep(1)
            
                 
   

      

    def rotatetest(self):
        at=pygame.sprite.spritecollide\
            (self,car.List,False,pygame.sprite.collide_mask)
        for att in at:
            att.rotate()
            att.rotate()
            att.nearbyrotate()
            car.List.remove(att)
            hits=pygame.sprite.spritecollide\
                (att,car.List,False,pygame.sprite.collide_mask)
            car.List.add(att)
            for hit in hits:
                print(hit.x,hit.y)

    def rotatetest1(self):
        
            car2.rotate()
            car2.rotate()
            car2.nearbyrotate()
            car.List.remove(car2)
            hits=pygame.sprite.spritecollide\
                (car2,car.List,False,pygame.sprite.collide_mask)
            car.List.add(car2)
            for hit in hits:
                print(hit.x,hit.y)
    def shoot(self,a,b,color,shape):
        
            
        abullet=bullet(self.rect.centerx,self.rect.centery,color,shape)
    
        if a.rect.centerx==b.rect.centerx:
            if a.rect.centery>b.rect.centery:
                abullet.vely=-75
            if a.rect.centery<b.rect.centery:
                abullet.vely=75
        elif a.rect.centery==b.rect.centery:
            if a.rect.centerx>b.rect.centerx:
                abullet.velx=-75
                abullet.image=pygame.transform.rotate(abullet.imageorig,90)
                
            if a.rect.centerx<b.rect.centerx:
                abullet.velx=75
                abullet.image=pygame.transform.rotate(abullet.imageorig,90)
        elif a.rect.centerx<b.rect.centerx and \
             a.rect.centery>b.rect.centery:
            dy=a.rect.centery-b.rect.centery
            dx=b.rect.centerx-a.rect.centerx
            angle=math.atan2(dy, dx)
            
            abullet.velx=75*math.cos(angle)
            abullet.vely=-75*math.sin(angle)
            abullet.image=pygame.transform.rotate(abullet.imageorig,\
                                                 (360-(90-math.degrees(angle))))
        elif a.rect.centerx>b.rect.centerx and \
             a.rect.centery>b.rect.centery:
            dy=a.rect.centery-b.rect.centery
            dx=a.rect.centerx-b.rect.centerx
            angle=math.atan2(dy, dx)
            
            abullet.velx=-75*math.cos(angle)
            abullet.vely=-75*math.sin(angle)
            abullet.image=pygame.transform.rotate(abullet.imageorig,\
                                                 (90-math.degrees(angle)))
        elif a.rect.centerx>b.rect.centerx and \
             a.rect.centery<b.rect.centery:
            dy=b.rect.centery-a.rect.centery
            dx=a.rect.centerx-b.rect.centerx
            angle=math.atan2(dy, dx)
            
            abullet.velx=-75*math.cos(angle)
            abullet.vely=75*math.sin(angle)
            abullet.image=pygame.transform.rotate(abullet.imageorig,\
                                                 (90+math.degrees(angle)))
        
        elif a.rect.centerx<b.rect.centerx and \
             a.rect.centery<b.rect.centery:
            dy=b.rect.centery-a.rect.centery
            dx=b.rect.centerx-a.rect.centerx
            angle=math.atan2(dy, dx)
            
            abullet.velx=75*math.cos(angle)
            abullet.vely=75*math.sin(angle)
            abullet.image=pygame.transform.rotate(abullet.imageorig,\
                                                 (360-90-math.degrees(angle)))

       
class bullet(pygame.sprite.Sprite):
    List=pygame.sprite.Group()
    
    def __init__(self,x,y,color,shape):
        pygame.sprite.Sprite.__init__(self)
        bullet.List.add(self)
        
        self.velx=0
        self.vely=0
        if shape=='rect':
           self.imageorig=pygame.Surface((6,8))
           self.imageorig.fill(color)
           self.imageorig.set_colorkey(white)
           self.image=self.imageorig.copy()
           self.rect=self.image.get_rect()
           self.rect.centery=y
           self.rect.centerx=x
        if  shape=='circle':
            bulletImg=pygame.image.load('bullet.jpg') 
            self.imageorig=bulletImg
            self.imageorig.set_colorkey(white)
            self.image=self.imageorig.copy()
            self.rect=self.image.get_rect()
            self.rect.centery=y
            self.rect.centerx=x
            
        
    def update(self):
        self.rect.x+=self.velx
        self.rect.y+=self.vely
        if self.rect.bottom<0 or self.rect.top>600 or\
           self.rect.right<0 or self.rect.left>800:
            self.kill()



x=0
y=200

car(x,y-199,0)
car(x+199,y-199,0)
car(x+398,y-199,0)
#car(x+597,y-199)
car1=car(x,y,0)
car2=car(x+199,y,4)
car(x+398,y,0)
#car(x+597,y)
car5=car(x,y+199,0)
car(x+199,y+199,0)
car(x+398,y+199,0)
#car(x+597,y+199)
print(enemy.enemycount)
enemyname=enemy(x,y+199,enemylistred)
print(enemy.enemycount)
#enemyname2=enemy(x+597,y-199)
enemyname2=enemy(x+398,y-199,enemylistblack)


#print(car.List.remove(car2))
#print(car.List)

#hits=pygame.sprite.spritecollide\
#    (car2,car.List,False,pygame.sprite.collide_mask)
#count=0
#for hit in hits:
#    count+=1
#    print(count)
#    print(str(hit))
#    print(hit.x,hit.y)

    
    


#enemyname.rotatetest1()
#enemyname.rotatetest1()
#enemyname.rotatetest1()
#enemyname.rotatetest1()

crashed=False

while not crashed:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
           crashed=True

    

    

    
    gameDisplay.fill(white)
    now=pygame.time.get_ticks()
    if now-enemyname.last>1000:
        
        enemyname.move()
        enemyname2.move()
        
        
            
            
            
        enemyname.last=now
    if enemyname.rect.centerx==enemyname2.rect.centerx and \
       enemyname.rect.centery==enemyname2.rect.centery:
        pass
    else:
        
        enemyname.shoot(enemyname,enemyname2,red,'rect')
        
        enemyname2.shoot(enemyname2,enemyname,purple,'circle')
        
        
    bullet.List.update()
    
    #enemyname.rotatetest()
    all_sprites.draw(gameDisplay)
    enemy.List.draw(gameDisplay)
    bullet.List.draw(gameDisplay)
    pygame.display.update()

    clock.tick(60)
    #import os
    #os.system("pause")
    
    

pygame.quit()

quit()

input()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值