• 大小: 0.55M
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-11
  • 语言: Python
  • 标签: 其他  

资源简介

python大作业.rar

资源截图

代码片段和文件信息

# -*- coding: cp936 -*-
import pygamesys
from pygame.locals import *
import random

boardWidthboardHeight=(88)
gemNum=64
gemImageNum=5
gemSize=32

startX=44
startY=44
endX=556
endY=556

LEFT=1
RIGHT=2
UP=3
DOWN=4

square=[‘red.jpg‘‘green.jpg‘‘blue.jpg‘‘orange.jpg‘‘yellow.jpg‘]
gemImages=[]

class Game:

    def __init__(self):
        #初始化 pygame,screen ,timeclock
        pygame.init()
        self.bg=pygame.image.load(‘background.jpg‘)
        for i in square:
            gem=pygame.image.load(i)
            gemImages.append(gem)
        self.trans=pygame.image.load(‘trans.png‘)
        #trans是一个64x64的空白方块
        
        self.screen=pygame.display.set_mode((800600))
        self.clock=pygame.time.Clock()    
        pygame.display.set_caption(‘Voice China‘)
        
        #初始化整个版面的布局,列表解析,嵌套字典,每个小字典cube对应一个小方块的三个属性(key)
        self.mainBoard=[[{} for i in range(boardWidth)]for j in range(boardHeight)]
        for i in range(boardWidth):
            for j in range(boardHeight):
               cube={} 
               cube[‘imageColor‘]=gemImages[random.randint(04)]
               cube[‘x‘]=startX+j*64
               cube[‘y‘]=startY+i*64
               self.mainBoard[i][j]=cube
        matchedGemInit=self.FindMatchedGems()#to be continued(这是开始编写的时候留下的注释)

        while matchedGemInit!=[]:
            for gem in matchedGemInit:
                #重置这个小块儿,然后把它从matchedGemInit中删去,让matchweGemInit继续工作
                self.mainBoard[gem[0]][gem[1]][‘imageColor‘]=gemImages[random.randint(04)]
                matchedGemInit.remove(gem)
            matchedGemInit+=self.FindMatchedGems()

    #检验是否在board内点击,鼠标点击事件是比较麻烦的,要全面考虑每次点击的位置,de各种bug...                          
    def CheckIfInBoard(selfpos):
        if(pos[0]>startX and pos[0]startY and pos[1]            x=int((pos[0]-startX)/64)
            y=int((pos[1]-startY)/64)
            return (yx)
            #开始没注意这个细节,整个程序就瘫痪了...
        
        return None

    #下落过程和最上方的更新,这个实现比较繁琐,不过好歹是想出来了
    def DropGem(self):             
        Distance=[]
        count=0     
        for j in range(8):
            for i in range(8):
                if self.mainBoard[i][j][‘imageColor‘]==self.trans:
                    count+=1
            Distance.append(count)
            count=0 
             
        #在这里加一个得分的声音get_point
        get_point.play()

        #对每一列的每行上的进行检查,逐一下移到line==0为止,在第一行随机补上
        for col in range(8):
            while(Distance[col]!=0):
                for line in range(8):
                    if(self.mainBoard[line][col][‘imageColor‘]==self.trans):
                        if(line==0):
                            self.mainBoard[0][col][‘imageColor‘]=gemImages[random.randint(04)]
                            Distance[col]=Distance[col]-1
                        else:
                            self.mainBoard[line][col][‘imageColor‘]=self.mainBoard[line-1][c

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     137884  2014-12-20 11:46  python大作业\background.jpg

     文件     349902  2014-12-16 15:34  python大作业\bg_music.mp3

     文件       3272  2014-12-20 12:00  python大作业\blue.jpg

     文件       9114  2012-07-20 03:49  python大作业\get_point.ogg

     文件      17258  2014-12-20 12:03  python大作业\green.jpg

     文件       3321  2014-12-20 12:04  python大作业\orange.jpg

     文件       3929  2014-12-20 12:01  python大作业\red.jpg

     文件       2877  2012-02-20 18:32  python大作业\trans.png

     文件      50820  2012-07-19 20:36  python大作业\win.ogg

     文件       3613  2014-12-20 11:58  python大作业\yellow.jpg

     文件      13957  2014-12-22 22:38  python大作业\对对碰@中国好声音.py

     目录          0  2014-12-27 23:30  python大作业

----------- ---------  ---------- -----  ----

               595947                    12


评论

共有 条评论