支持自动保存音量设置到文件,以便下次直接应用
This commit is contained in:
parent
ffc57d12ff
commit
2b85451404
@ -30,6 +30,15 @@ class Level(tool.State):
|
|||||||
self.setupBackground()
|
self.setupBackground()
|
||||||
self.initState()
|
self.initState()
|
||||||
|
|
||||||
|
def saveUserData(self):
|
||||||
|
with open(c.USERDATA_PATH, "w") as f:
|
||||||
|
userdata = {}
|
||||||
|
for i in self.game_info:
|
||||||
|
if i in c.INIT_USERDATA:
|
||||||
|
userdata[i] = self.game_info[i]
|
||||||
|
dataToSave = json.dumps(userdata, sort_keys=True, indent=4)
|
||||||
|
f.write(dataToSave)
|
||||||
|
|
||||||
def loadMap(self):
|
def loadMap(self):
|
||||||
if self.game_info[c.GAME_MODE] == c.MODE_LITTLEGAME:
|
if self.game_info[c.GAME_MODE] == c.MODE_LITTLEGAME:
|
||||||
map_file = f'littleGame_{self.game_info[c.LITTLEGAME_NUM]}.json'
|
map_file = f'littleGame_{self.game_info[c.LITTLEGAME_NUM]}.json'
|
||||||
@ -55,13 +64,7 @@ class Level(tool.State):
|
|||||||
self.game_info[c.LITTLEGAME_COMPLETIONS] += 1
|
self.game_info[c.LITTLEGAME_COMPLETIONS] += 1
|
||||||
self.done = True
|
self.done = True
|
||||||
self.next = c.MAIN_MENU
|
self.next = c.MAIN_MENU
|
||||||
with open(c.USERDATA_PATH, "w") as f:
|
self.saveUserData()
|
||||||
userdata = {}
|
|
||||||
for i in self.game_info:
|
|
||||||
if i in c.INIT_USERDATA:
|
|
||||||
userdata[i] = self.game_info[i]
|
|
||||||
savedata = json.dumps(userdata, sort_keys=True, indent=4)
|
|
||||||
f.write(savedata)
|
|
||||||
return
|
return
|
||||||
# 是否有铲子的信息:无铲子时为0,有铲子时为1,故直接赋值即可
|
# 是否有铲子的信息:无铲子时为0,有铲子时为1,故直接赋值即可
|
||||||
self.hasShovel = self.map_data[c.SHOVEL]
|
self.hasShovel = self.map_data[c.SHOVEL]
|
||||||
@ -590,6 +593,8 @@ class Level(tool.State):
|
|||||||
for i in c.SOUNDS:
|
for i in c.SOUNDS:
|
||||||
i.set_volume(self.game_info[c.VOLUME])
|
i.set_volume(self.game_info[c.VOLUME])
|
||||||
c.SOUND_BUTTON_CLICK.play()
|
c.SOUND_BUTTON_CLICK.play()
|
||||||
|
# 将音量信息存档
|
||||||
|
self.saveUserData()
|
||||||
elif self.inArea(self.volume_minus_button_rect, *mouse_pos):
|
elif self.inArea(self.volume_minus_button_rect, *mouse_pos):
|
||||||
self.game_info[c.VOLUME] = max(self.game_info[c.VOLUME] - 0.1, 0)
|
self.game_info[c.VOLUME] = max(self.game_info[c.VOLUME] - 0.1, 0)
|
||||||
# 一般不会有人想把音乐和音效分开设置,故pg.mixer.Sound.set_volume()和pg.mixer.music.set_volume()需要一起用
|
# 一般不会有人想把音乐和音效分开设置,故pg.mixer.Sound.set_volume()和pg.mixer.music.set_volume()需要一起用
|
||||||
@ -597,6 +602,8 @@ class Level(tool.State):
|
|||||||
for i in c.SOUNDS:
|
for i in c.SOUNDS:
|
||||||
i.set_volume(self.game_info[c.VOLUME])
|
i.set_volume(self.game_info[c.VOLUME])
|
||||||
c.SOUND_BUTTON_CLICK.play()
|
c.SOUND_BUTTON_CLICK.play()
|
||||||
|
# 将音量信息存档
|
||||||
|
self.saveUserData()
|
||||||
|
|
||||||
|
|
||||||
# 一大波僵尸来袭图片显示
|
# 一大波僵尸来袭图片显示
|
||||||
@ -1427,13 +1434,7 @@ class Level(tool.State):
|
|||||||
self.game_info[c.LEVEL_NUM] += 1
|
self.game_info[c.LEVEL_NUM] += 1
|
||||||
self.next = c.GAME_VICTORY
|
self.next = c.GAME_VICTORY
|
||||||
self.done = True
|
self.done = True
|
||||||
with open(c.USERDATA_PATH, "w") as f:
|
self.saveUserData()
|
||||||
userdata = {}
|
|
||||||
for i in self.game_info:
|
|
||||||
if i in c.INIT_USERDATA:
|
|
||||||
userdata[i] = self.game_info[i]
|
|
||||||
savedata = json.dumps(userdata, sort_keys=True, indent=4)
|
|
||||||
f.write(savedata)
|
|
||||||
elif self.checkLose():
|
elif self.checkLose():
|
||||||
self.next = c.GAME_LOSE
|
self.next = c.GAME_LOSE
|
||||||
self.done = True
|
self.done = True
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import pygame as pg
|
import pygame as pg
|
||||||
import os
|
import os
|
||||||
|
import json
|
||||||
from .. import tool
|
from .. import tool
|
||||||
from .. import constants as c
|
from .. import constants as c
|
||||||
|
|
||||||
@ -22,6 +23,15 @@ class Menu(tool.State):
|
|||||||
pg.display.set_caption(c.ORIGINAL_CAPTION)
|
pg.display.set_caption(c.ORIGINAL_CAPTION)
|
||||||
pg.mixer.music.set_volume(self.game_info[c.VOLUME])
|
pg.mixer.music.set_volume(self.game_info[c.VOLUME])
|
||||||
|
|
||||||
|
def saveUserData(self):
|
||||||
|
with open(c.USERDATA_PATH, "w") as f:
|
||||||
|
userdata = {}
|
||||||
|
for i in self.game_info:
|
||||||
|
if i in c.INIT_USERDATA:
|
||||||
|
userdata[i] = self.game_info[i]
|
||||||
|
dataToSave = json.dumps(userdata, sort_keys=True, indent=4)
|
||||||
|
f.write(dataToSave)
|
||||||
|
|
||||||
def setupBackground(self):
|
def setupBackground(self):
|
||||||
frame_rect = (80, 0, 800, 600)
|
frame_rect = (80, 0, 800, 600)
|
||||||
# 1、形参中加单星号,即f(*x)则表示x为元组,所有对x的操作都应将x视为元组类型进行。
|
# 1、形参中加单星号,即f(*x)则表示x为元组,所有对x的操作都应将x视为元组类型进行。
|
||||||
@ -270,6 +280,7 @@ class Menu(tool.State):
|
|||||||
for i in c.SOUNDS:
|
for i in c.SOUNDS:
|
||||||
i.set_volume(self.game_info[c.VOLUME])
|
i.set_volume(self.game_info[c.VOLUME])
|
||||||
c.SOUND_BUTTON_CLICK.play()
|
c.SOUND_BUTTON_CLICK.play()
|
||||||
|
self.saveUserData()
|
||||||
# 音量-
|
# 音量-
|
||||||
elif self.inArea(self.volume_minus_button_rect, *mouse_pos):
|
elif self.inArea(self.volume_minus_button_rect, *mouse_pos):
|
||||||
self.game_info[c.VOLUME] = max(self.game_info[c.VOLUME] - 0.1, 0)
|
self.game_info[c.VOLUME] = max(self.game_info[c.VOLUME] - 0.1, 0)
|
||||||
@ -278,6 +289,7 @@ class Menu(tool.State):
|
|||||||
for i in c.SOUNDS:
|
for i in c.SOUNDS:
|
||||||
i.set_volume(self.game_info[c.VOLUME])
|
i.set_volume(self.game_info[c.VOLUME])
|
||||||
c.SOUND_BUTTON_CLICK.play()
|
c.SOUND_BUTTON_CLICK.play()
|
||||||
|
self.saveUserData()
|
||||||
# 没有点到前两者时常规行检测所有按钮的点击和高亮
|
# 没有点到前两者时常规行检测所有按钮的点击和高亮
|
||||||
else:
|
else:
|
||||||
# 先检查选项高亮预览
|
# 先检查选项高亮预览
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user