2048小游戏

用python简单写个2048游戏

这是游戏的启动程序

import pygame
import time
from game2048.setting import GameSet
import game2048.gamemethod as gm

def start_game():
    pygame.init()
    settings=GameSet()
    screen = pygame.display.set_mode((settings.width, settings.height))
    areas=[]
    pygame.display.set_caption("2048")
    gm.refresh_area(areas, settings, screen)
    allarea=gm.all_area(settings,screen)
    while True:
        gm.check_event(allarea,areas,settings,screen)
        gm.print_screen(screen,areas)
        time.sleep(0.025)
start_game()

这是区域的设置

import pygame.font
class Area():
    def __init__(self,setting,msg,row,col,screen):
        self.msg=msg
        self.screen=screen
        self.row=row
        self.col=col
        self.font = pygame.font.SysFont(None, 48)
        self.text_color=(0,0,0)
        self.setting=setting
        self.rect = pygame.Rect(0, 0, self.setting.areawidth, self.setting.areawidth)
        self.init_rect_position()
        self.initColor()
        self.init_image()
    def init_rect_position(self):
        self.rect.x=(self.col-1)*self.setting.areawidth
        self.rect.y=(self.row-1)*self.setting.areawidth
    def update(self,row,col):
        self.msg=self.msg+self.msg
        self.row=row
        self.col=col
        self.initColor()
        self.init_rect_position()
        self.init_image()
    def onlyupdatePos(self,row,col):
        self.row=row
        self.col=col
        self.initColor()
        self.init_rect_position()
        self.init_image()
    def initColor(self):
        if self.msg==2:
            self.txt='2'
            self.bg_color=(255,179,167)
        elif self.msg==4:
            self.txt='4'
            self.bg_color=(244,121,131)
        elif self.msg==8:
            self.txt='8'
            self.bg_color = (219,90,107)
        elif self.msg==16:
            self.txt='16'
            self.bg_color = (250,255,114)
        elif self.msg==32:
            self.txt='32'
            self.bg_color = (255,241,67)
        elif self.msg==64:
            self.txt='64'
            self.bg_color = (255,164,0)
        elif self.msg==128:
            self.txt='128'
            self.bg_color = (250,140,53)
        elif self.msg==256:
            self.txt='256'
            self.bg_color = (141,75,187)
        elif self.msg==512:
            self.txt='512'
            self.bg_color = (128,29,174)
        elif self.msg==1024:
            self.txt='1024'
            self.bg_color = (75,92,196)
        elif self.msg==2048:
            self.txt='2048'
            self.bg_color = (112,243,255)
    def init_image(self):
        self.msg_image = self.font.render(self.txt, True, self.text_color,
                                          self.bg_color)
        self.msg_image_rect = self.msg_image.get_rect()
        self.msg_image_rect.center = self.rect.center
    def draw_area(self):
        self.screen.fill(self.bg_color, self.rect)
        self.screen.blit(self.msg_image, self.msg_image_rect)

这是游戏的算法

import random
import pygame
import operator
import sys
from game2048.area import Area
def all_area(setting,screen):
    allArea=[]
    for i in range(4):
        for j in range(4):
            area = Area(setting, 2,i+1,j+1, screen)
            allArea.append(area)
    return allArea
def refresh_area(areas,setting,screen):
      m=0
      while m<4:
          t = random.randint(0, 2)
          flag=True
          per=4
          k = random.randint(1, 4)
          j = random.randint(1, 4)
          area = Area(setting, per, k, j, screen)
          for code in areas:
              if code.row==area.row and code.col==area.col:
                  m-=1
                  flag=False
                  break
          if flag:
              areas.append(area)
          m+=1
def check_event(allarea,areas,setting,screen):
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
           check_keydown_event(allarea,event,areas,setting,screen)
    if check_game_over(areas)==False:
        sys.exit()
def event_simple(allarea,areas,setting,screen,flag1,flag2):
    newArea = parse_area(areas.copy(), flag1)
    muchNewArea = count_area(setting,screen,newArea, flag1, flag2)
    if check_game_over(muchNewArea) == True and len(muchNewArea)<16 and check_refresh(areas,muchNewArea):
        muchNewArea.append(check_empty_button(allarea,muchNewArea, setting, screen))
    areas.clear()
    areas.extend(muchNewArea)
    muchNewArea.clear()
def check_refresh(areas1,areas2):
    if len(areas2)>len(areas1):
        return False
    elif len(areas2)==len(areas1):
        cmfun = operator.attrgetter('row', 'col')
        areas1.sort(key=cmfun)
        areas2.sort(key=cmfun)
        for n in range(len(areas1)):
            if areas1[n].row!=areas2[n].row or areas1[n].col!=areas2[n].col:
                return True
        return False
    else:
        return True
def check_keydown_event(allarea,event,areas,setting,screen):
    if event.key == pygame.K_RIGHT:
        event_simple(allarea,areas,setting,screen,True,False)
    elif event.key == pygame.K_LEFT:
        event_simple(allarea,areas,setting,screen,True,True)
    elif event.key == pygame.K_UP:
        event_simple(allarea,areas,setting,screen,False,True)
    elif event.key == pygame.K_DOWN:
        event_simple(allarea,areas,setting,screen,False,False)
def print_screen(screen,areas):
    screen.fill((255,255,255))
    for view in areas:
        view.draw_area()
    pygame.display.flip()
def check_game_over(areas):
    if len(areas)<16:
        return True
    else:
        for area in areas:
            for code in areas:
                if area.msg==code.msg:
                    if (area.row==code.row and area.col==code.col+1) or (area.row==code.row and area.col==code.col-1):
                        return True
                    elif (area.col==code.col and area.row==code.row+1) or (area.col==code.col and area.row==code.row-1):
                        return True
        return False
def check_empty_button(allarea,areas,setting,screen):

    for n in range(len(allarea)):
            for m in range(len(areas)):
                if areas[m].row==allarea[n].row and areas[m].col==allarea[n].col:
                    break
                elif m==len(areas)-1 and (areas[m].row!=allarea[n].row or areas[m].col!=allarea[n].col):
                   area = Area(setting, 4, allarea[n].row, allarea[n].col, screen)
                   return  area
def parse_area(areas,flag):
    newArea=[]
    #True表示横向,False表示纵向
    if flag==True:
        cmfun = operator.attrgetter('row','col')
        areas.sort(key=cmfun)
        t=0
        rowArea=[]
        for n in range(len(areas)):
            if n==0:
                t=areas[n].row
                rowArea.append(areas[n])
            else:
                if areas[n].row==t:
                    rowArea.append(areas[n])
                else:
                    newArea.append(rowArea.copy())
                    rowArea.clear()
                    t=areas[n].row
                    rowArea.append(areas[n])
            if n == len(areas) - 1:
                newArea.append(rowArea.copy())
        return newArea
    else:
        cmfun = operator.attrgetter('col','row')
        areas.sort(key=cmfun)
        t = 0
        rowArea = []
        for n in range(len(areas)):
            if n == 0:
                t = areas[n].col
                rowArea.append(areas[n])
            else:
                if areas[n].col == t:
                    rowArea.append(areas[n])
                else:
                    newArea.append(rowArea.copy())
                    rowArea.clear()
                    t = areas[n].col
                    rowArea.append(areas[n])
            if n == len(areas) - 1:
                newArea.append(rowArea.copy())
        return newArea
def count_area(setting,screen,areas,flag,txt):
    newArea = []
    # flag True表示横向,False表示纵向
    if flag==True:
        # txt True表示向左,False表示向右
        for m in range(len(areas)):
            if len(areas[m])==1:
                if txt==True:
                    area = Area(setting,areas[m][0].msg,areas[m][0].row,1, screen)
                    #areas[m][0].onlyupdatePos(areas[m][0].row, 1)
                    newArea.append(area)
                else:
                    area = Area(setting, areas[m][0].msg, areas[m][0].row,4, screen)
                    #areas[m][0].onlyupdatePos(areas[m][0].row, 4)
                    newArea.append(area)
            elif len(areas[m])==2:
                if txt==True:
                    if areas[m][0].msg==areas[m][1].msg:
                      areas[m][0].update(areas[m][0].row,1)
                      newArea.append(areas[m][0])
                    else:
                      area1 = Area(setting, areas[m][0].msg, areas[m][0].row, 1, screen)
                      area2 = Area(setting, areas[m][1].msg, areas[m][1].row, 2, screen)
                      #areas[m][0].onlyupdatePos(areas[m][0].row, 1)
                      #areas[m][1].onlyupdatePos(areas[m][1].row, 2)
                      newArea.append(area2)
                      newArea.append(area1)
                else:
                    if areas[m][0].msg==areas[m][1].msg:
                      areas[m][1].update(areas[m][1].row,4)
                      newArea.append(areas[m][1])
                    else:
                      area1 = Area(setting, areas[m][0].msg, areas[m][0].row, 3, screen)
                      area2 = Area(setting, areas[m][1].msg, areas[m][1].row, 4, screen)
                      #areas[m][0].onlyupdatePos(areas[m][0].row, 3)
                      #areas[m][1].onlyupdatePos(areas[m][1].row, 4)
                      newArea.append(area1)
                      newArea.append(area2)
            elif len(areas[m])==3:
                if txt==True:
                    if areas[m][0].msg==areas[m][1].msg:
                        areas[m][0].update(areas[m][0].row,1)
                        areas[m][2].onlyupdatePos(areas[m][2].row,2)
                        newArea.append(areas[m][0])
                        newArea.append(areas[m][2])
                    elif areas[m][1].msg==areas[m][2].msg:
                        areas[m][1].update(areas[m][1].row,2)
                        areas[m][0].onlyupdatePos(areas[m][0].row,1)
                        newArea.append(areas[m][1])
                        newArea.append(areas[m][0])
                    else:
                        area1 = Area(setting, areas[m][0].msg, areas[m][0].row, 1, screen)
                        area2 = Area(setting, areas[m][1].msg, areas[m][1].row, 2, screen)
                        area3 = Area(setting, areas[m][2].msg, areas[m][2].row, 3, screen)
                        #areas[m][0].onlyupdatePos(areas[m][0].row, 1)
                        #areas[m][1].onlyupdatePos(areas[m][1].row, 2)
                        #areas[m][2].onlyupdatePos(areas[m][2].row, 3)
                        newArea.append(area1)
                        newArea.append(area2)
                        newArea.append(area3)
                else:
                    if areas[m][1].msg==areas[m][2].msg:
                        areas[m][2].update(areas[m][2].row,4)
                        areas[m][0].onlyupdatePos(areas[m][0].row,3)
                        newArea.append(areas[m][0])
                        newArea.append(areas[m][2])
                    elif areas[m][0].msg==areas[m][1].msg:
                        areas[m][1].update(areas[m][1].row,3)
                        areas[m][2].onlyupdatePos(areas[m][2].row,4)
                        newArea.append(areas[m][1])
                        newArea.append(areas[m][2])
                    else:
                        area1 = Area(setting, areas[m][0].msg, areas[m][0].row, 2, screen)
                        area2 = Area(setting, areas[m][1].msg, areas[m][1].row, 3, screen)
                        area3 = Area(setting, areas[m][2].msg, areas[m][2].row, 4, screen)
                        #areas[m][2].onlyupdatePos(areas[m][2].row,4)
                        #areas[m][1].onlyupdatePos(areas[m][1].row,3)
                        #areas[m][0].onlyupdatePos(areas[m][0].row,2)
                        newArea.append(area1)
                        newArea.append(area2)
                        newArea.append(area3)
            elif len(areas[m])==4:
                if txt==True:
                    if areas[m][0].msg==areas[m][1].msg:
                        areas[m][0].update(areas[m][0].row, 1)
                        if areas[m][2].msg==areas[m][3].msg:
                            areas[m][2].update(areas[m][2].row,2)
                            newArea.append(areas[m][2])
                            newArea.append(areas[m][0])
                        else:
                            areas[m][2].onlyupdatePos(areas[m][2].row,2)
                            areas[m][3].onlyupdatePos(areas[m][3].row,3)
                            newArea.append(areas[m][2])
                            newArea.append(areas[m][0])
                            newArea.append(areas[m][3])
                    elif areas[m][1].msg==areas[m][2].msg:
                        areas[m][3].onlyupdatePos(areas[m][3].row,3)
                        areas[m][0].onlyupdatePos(areas[m][0].row,1)
                        areas[m][1].update(areas[m][1].row,2)
                        newArea.append(areas[m][1])
                        newArea.append(areas[m][0])
                        newArea.append(areas[m][3])
                    elif areas[m][2].msg==areas[m][3].msg:
                        areas[m][2].update(areas[m][2].row,3)
                        areas[m][1].onlyupdatePos(areas[m][2].row,2)
                        areas[m][0].onlyupdatePos(areas[m][2].row,1)
                        newArea.append(areas[m][0])
                        newArea.append(areas[m][1])
                        newArea.append(areas[m][2])
                    else:
                        area1 = Area(setting, areas[m][0].msg, areas[m][0].row, 1, screen)
                        area2 = Area(setting, areas[m][1].msg, areas[m][1].row, 2, screen)
                        area3 = Area(setting, areas[m][2].msg, areas[m][2].row, 3, screen)
                        area4 = Area(setting, areas[m][3].msg, areas[m][3].row, 4, screen)
                        #areas[m][0].onlyupdatePos(areas[m][0].row,1)
                        #areas[m][1].onlyupdatePos(areas[m][1].row,2)
                        #areas[m][2].onlyupdatePos(areas[m][2].row,3)
                        #areas[m][3].onlyupdatePos(areas[m][3].row,4)
                        newArea.append(area1)
                        newArea.append(area2)
                        newArea.append(area3)
                        newArea.append(area4)
                else:
                    if areas[m][2].msg==areas[m][3].msg:
                        areas[m][3].update(areas[m][3].row,4)
                        if areas[m][0].msg==areas[m][1].msg:
                            areas[m][1].update(areas[m][1].row,3)
                            newArea.append(areas[m][1])
                            newArea.append(areas[m][3])
                        else:
                            areas[m][0].onlyupdatePos(areas[m][0].row,2)
                            areas[m][1].onlyupdatePos(areas[m][1].row,3)
                            newArea.append(areas[m][1])
                            newArea.append(areas[m][0])
                            newArea.append(areas[m][3])
                    elif areas[m][1].msg==areas[m][2].msg:
                        areas[m][3].onlyupdatePos(areas[m][3].row,4)
                        areas[m][0].onlyupdatePos(areas[m][0].row,2)
                        areas[m][2].update(areas[m][2].row,3)
                        newArea.append(areas[m][2])
                        newArea.append(areas[m][0])
                        newArea.append(areas[m][3])
                    elif areas[m][0].msg==areas[m][1].msg:
                        areas[m][1].update(areas[m][1].row,2)
                        areas[m][2].onlyupdatePos(areas[m][2].row,3)
                        areas[m][3].onlyupdatePos(areas[m][3].row,4)
                        newArea.append(areas[m][1])
                        newArea.append(areas[m][2])
                        newArea.append(areas[m][3])
                    else:
                        area1 = Area(setting, areas[m][0].msg, areas[m][0].row, 1, screen)
                        area2 = Area(setting, areas[m][1].msg, areas[m][1].row, 2, screen)
                        area3 = Area(setting, areas[m][2].msg, areas[m][2].row, 3, screen)
                        area4 = Area(setting, areas[m][3].msg, areas[m][3].row, 4, screen)
                        #areas[m][0].onlyupdatePos(areas[m][0].row,1)
                        #areas[m][1].onlyupdatePos(areas[m][1].row,2)
                        #areas[m][2].onlyupdatePos(areas[m][2].row,3)
                        #areas[m][3].onlyupdatePos(areas[m][3].row,4)
                        newArea.append(area1)
                        newArea.append(area2)
                        newArea.append(area3)
                        newArea.append(area4)
    else:
        # txt True表示向上,False表示向下
        for m in range(len(areas)):
            if len(areas[m]) == 1:
                if txt==True:
                    area1 = Area(setting, areas[m][0].msg, 1, areas[m][0].col, screen)
                    #areas[m][0].onlyupdatePos(1,areas[m][0].col)
                    newArea.append(area1)
                else:
                    area1 = Area(setting, areas[m][0].msg,4, areas[m][0].col, screen)
                    #areas[m][0].onlyupdatePos(4,areas[m][0].col)
                    newArea.append(area1)
            elif len(areas[m]) == 2:
                if txt==True:
                    if areas[m][0].msg == areas[m][1].msg:
                        areas[m][0].update(1,areas[m][0].col)
                        newArea.append(areas[m][0])
                    else:
                        area1 = Area(setting, areas[m][0].msg, 1, areas[m][0].col, screen)
                        area2 = Area(setting, areas[m][1].msg, 2, areas[m][1].col, screen)
                        #areas[m][0].onlyupdatePos(1,areas[m][0].col)
                        #areas[m][1].onlyupdatePos(2,areas[m][1].col)
                        newArea.append(area1)
                        newArea.append(area2)
                else:
                    if areas[m][0].msg == areas[m][1].msg:
                        areas[m][1].update(4,areas[m][1].col)
                        newArea.append(areas[m][1])
                    else:
                        area1 = Area(setting, areas[m][0].msg, 3, areas[m][0].col, screen)
                        area2 = Area(setting, areas[m][1].msg, 4, areas[m][1].col, screen)
                        #areas[m][0].onlyupdatePos(3,areas[m][0].col)
                        #areas[m][1].onlyupdatePos(4,areas[m][1].col)
                        newArea.append(area1)
                        newArea.append(area2)
            elif len(areas[m]) == 3:
                if txt==True:
                    if areas[m][0].msg == areas[m][1].msg:
                        areas[m][0].update(1,areas[m][0].col)
                        areas[m][2].onlyupdatePos(2,areas[m][0].col)
                        newArea.append(areas[m][0])
                        newArea.append(areas[m][2])
                    elif areas[m][1].msg == areas[m][2].msg:
                        areas[m][1].update(2,areas[m][1].col)
                        areas[m][0].onlyupdatePos(1,areas[m][0].col)
                        newArea.append(areas[m][1])
                        newArea.append(areas[m][0])
                    else:
                        area1 = Area(setting, areas[m][0].msg, 1, areas[m][0].col, screen)
                        area2 = Area(setting, areas[m][1].msg, 2, areas[m][1].col, screen)
                        area3 = Area(setting, areas[m][2].msg, 3, areas[m][2].col, screen)
                        #areas[m][0].onlyupdatePos(1,areas[m][0].col)
                        #areas[m][1].onlyupdatePos(2,areas[m][1].col)
                        #areas[m][2].onlyupdatePos(3,areas[m][2].col)
                        newArea.append(area1)
                        newArea.append(area2)
                        newArea.append(area3)
                else:
                    if areas[m][1].msg == areas[m][2].msg:
                        areas[m][2].update(4,areas[m][2].col)
                        areas[m][0].onlyupdatePos(3,areas[m][0].col)
                        newArea.append(areas[m][0])
                        newArea.append(areas[m][2])
                    elif areas[m][0].msg == areas[m][1].msg:
                        areas[m][1].update(3,areas[m][1].col)
                        areas[m][2].onlyupdatePos(4,areas[m][2].col)
                        newArea.append(areas[m][1])
                        newArea.append(areas[m][2])
                    else:
                        area1 = Area(setting, areas[m][0].msg, 2, areas[m][0].col, screen)
                        area2 = Area(setting, areas[m][1].msg, 3, areas[m][1].col, screen)
                        area3 = Area(setting, areas[m][2].msg, 4, areas[m][2].col, screen)
                        #areas[m][2].onlyupdatePos(4,areas[m][2].col)
                        #areas[m][1].onlyupdatePos(3,areas[m][1].col)
                        #areas[m][0].onlyupdatePos(2,areas[m][0].col)
                        newArea.append(area1)
                        newArea.append(area2)
                        newArea.append(area3)
            elif len(areas[m]) == 4:
                if txt==True:
                    if areas[m][0].msg == areas[m][1].msg:
                        areas[m][0].update(1,areas[m][0].col)
                        if areas[m][2].msg == areas[m][3].msg:
                            areas[m][2].update(2,areas[m][2].col)
                            newArea.append(areas[m][2])
                            newArea.append(areas[m][0])
                        else:
                            areas[m][2].onlyupdatePos(2,areas[m][2].col)
                            areas[m][3].onlyupdatePos(3,areas[m][3].col)
                            newArea.append(areas[m][2])
                            newArea.append(areas[m][0])
                            newArea.append(areas[m][3])
                    elif areas[m][1].msg == areas[m][2].msg:
                        areas[m][3].onlyupdatePos(3,areas[m][3].col)
                        areas[m][0].onlyupdatePos(1,areas[m][0].col)
                        areas[m][1].update(2,areas[m][1].col)
                        newArea.append(areas[m][1])
                        newArea.append(areas[m][0])
                        newArea.append(areas[m][3])
                    elif areas[m][2].msg == areas[m][3].msg:
                        areas[m][2].update(3,areas[m][2].col)
                        areas[m][1].onlyupdatePos(2,areas[m][2].col)
                        areas[m][0].onlyupdatePos(1,areas[m][2].col)
                        newArea.append(areas[m][0])
                        newArea.append(areas[m][1])
                        newArea.append(areas[m][2])
                    else:
                        area1 = Area(setting, areas[m][0].msg, 1, areas[m][0].col, screen)
                        area2 = Area(setting, areas[m][1].msg, 2, areas[m][1].col, screen)
                        area3 = Area(setting, areas[m][2].msg, 3, areas[m][2].col, screen)
                        area4 = Area(setting, areas[m][3].msg, 4, areas[m][3].col, screen)
                        #areas[m][0].onlyupdatePos(1,areas[m][0].col)
                        #areas[m][1].onlyupdatePos(2,areas[m][1].col)
                        #areas[m][2].onlyupdatePos(3,areas[m][2].col)
                        #areas[m][3].onlyupdatePos(4,areas[m][3].col)
                        newArea.append(area1)
                        newArea.append(area2)
                        newArea.append(area3)
                        newArea.append(area4)
                else:
                    if areas[m][2].msg == areas[m][3].msg:
                        areas[m][3].update(4,areas[m][3].col)
                        if areas[m][0].msg == areas[m][1].msg:
                            areas[m][1].update(3,areas[m][1].col)
                            newArea.append(areas[m][1])
                            newArea.append(areas[m][3])
                        else:
                            areas[m][0].onlyupdatePos(2,areas[m][0].col)
                            areas[m][1].onlyupdatePos(3,areas[m][1].col)
                            newArea.append(areas[m][1])
                            newArea.append(areas[m][0])
                            newArea.append(areas[m][3])
                    elif areas[m][1].msg == areas[m][2].msg:
                        areas[m][3].onlyupdatePos(4,areas[m][3].col)
                        areas[m][0].onlyupdatePos(2,areas[m][0].col)
                        areas[m][2].update(3,areas[m][2].col)
                        newArea.append(areas[m][2])
                        newArea.append(areas[m][0])
                        newArea.append(areas[m][3])
                    elif areas[m][0].msg == areas[m][1].msg:
                        areas[m][3].onlyupdatePos(4,areas[m][3].col)
                        areas[m][2].onlyupdatePos(3,areas[m][2].col)
                        areas[m][1].update(2,areas[m][1].col)
                        newArea.append(areas[m][2])
                        newArea.append(areas[m][1])
                        newArea.append(areas[m][3])
                    else:
                        area1 = Area(setting, areas[m][0].msg, 1, areas[m][0].col, screen)
                        area2 = Area(setting, areas[m][1].msg, 2, areas[m][1].col, screen)
                        area3 = Area(setting, areas[m][2].msg, 3, areas[m][2].col, screen)
                        area4 = Area(setting, areas[m][3].msg, 4, areas[m][3].col, screen)
                        #areas[m][0].onlyupdatePos(1,areas[m][0].col)
                        #areas[m][1].onlyupdatePos(2,areas[m][1].col)
                        #areas[m][2].onlyupdatePos(3,areas[m][2].col)
                        #areas[m][3].onlyupdatePos(4,areas[m][3].col)
                        newArea.append(area1)
                        newArea.append(area2)
                        newArea.append(area3)
                        newArea.append(area4)
    return newArea







这是游戏的配置

class GameSet():
    def __init__(self):
        self.width=600
        self.height=600
        self.areawidth=150
        self.count_num=4
        self.init_num=4

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值