2015年3月1日 星期日

pygtk cairo動畫(續),增加播放wav聲音檔,播放圖片list,修改鍵盤事件........

原碼下載






我用自己寫的move_object.py動畫引擎模組,很簡單的就寫出了滿複雜的射擊遊戲,當然move_object.py可作很多的動畫,有時間會在嘗試其他遊戲,並增加move_object.py的功能
move_object.py新增了播放圖片list,和預設動作,背景上寫更多文字,圖片list移動物可顯示life,在遊戲中,你會看到大隻飛碟的燈號會閃來閃去,飛碟會向下或朝玩家丟子彈

並增加播放wav聲音檔模組soundwave.py,只是用os.popen,來執行LINUX指令paplay播放wav,目前LINUX音效都是pulseaudio

os.popen('paplay '+self.file)

讓機台很順的左右移動
主程式增加鬆開鍵盤事件connect,鬆開右或左鍵,停止移動
改寫鍵盤壓下事件,壓下左鍵時物件自動一直向,壓下右鍵時物件自動一直向右
............
self.window.connect("key-release-event", self.on_key_up)#鬆開

..............................
move_list_signal.py增加鬆開鍵盤事件


    #鍵盤事件,鬆開
    def on_key_up(self, event,list):
        key = event.keyval
        if key == gtk.keysyms.Right:self.main.move_stop()
        if key == gtk.keysyms.Left:self.main.move_stop()

之前移動物,只單張圖片,現在可用圖片list,會輪流播放圖片,下面是畫出一隻特大飛碟,飛碟燈會閃來閃去

              p=["fly1.png","fly2.png","fly3.png"]
              move_fly_king=move_object.move_object(self,self.framme1,self.darea,p,None,None,"RECEVER_collision_fly","SEND_move_fly",50)#生命50
              move_fly_king.set_move_type("直線X")
              move_fly_king.set_y(70)
              move_fly_king.set_life(100)#設生命
              self.move_list_fly_king.append(move_fly_king)

背景上可用set_text_list,寫更多文字,如下
         list1=["分數:"+str(self.score),self.get_frame_w_h()[0]-180,25,30,"紅色"]
         list2=["射擊遊戲V1.0",12,18,20,"黃色"]
         self.move_obj_b.set_text_list([list1,list2])

預設移動方式,增加2種set_move_foward(x,y),朝x,y方向前進

move_ufo_bullet.set_move_foward(self.move_body.get_xy()[0],self.move_body.get_xy()[1])#朝

角度直線可帶旋轉,第一參數angle=-90直線向上,第2參數5是移動量,若0原地不動,第3參數旋轉半徑,第4參數是旋轉半徑增幅

move_bullet.set_move_angle(angle,5,20,0)

若要讓移動物,繞半徑50,原地旋轉set_move_angle(90,0,50,0)
若要讓移動物,直線向上set_move_angle(-90,5)
.....................

沒有留言: