Very much done

This commit is contained in:
Jonas Zeunert
2021-03-07 10:51:24 +01:00
parent f07c686b68
commit c54ab2e311
47 changed files with 339 additions and 77 deletions

1
.gitignore vendored
View File

@@ -2,3 +2,4 @@
__pycache__ __pycache__
venv venv
.pyc .pyc
env

View File

@@ -5,5 +5,5 @@ class Event:
self.name = name self.name = name
logging.info("Created " + self.name) logging.info("Created " + self.name)
def trigger(self): def trigger(self, target):
logging.info('Event ' + self.name + ' triggered!') logging.info('Event ' + self.name + ' triggered!')

View File

@@ -1,5 +1,6 @@
from threading import Timer from threading import Timer
import time import time
import config
class PlayerState: class PlayerState:
def __init__(self, display, specialDisplay, id, ballsToPlay, upperPlayfieldTime = 5, bonusTime = 0): def __init__(self, display, specialDisplay, id, ballsToPlay, upperPlayfieldTime = 5, bonusTime = 0):
@@ -8,10 +9,68 @@ class PlayerState:
self.id = id self.id = id
self.points = 0 self.points = 0
self.ballsLeft = ballsToPlay self.ballsLeft = ballsToPlay
self.upperPlayfieldTime = upperPlayfieldTime
self.bonusTime = bonusTime self.bonusTime = config.BEGINNING_BONUS_TIME
self.reset()
def reset(self):
self.bonus = 0
self.bonusMultiplier = 1
self.timer = None self.timer = None
self.timerStartTime = None self.timerStartTime = None
self.replayBall = False
self.upperPlayfieldTime = config.BEGINNING_UPPER_PLAYFIELD_TIME
self.resetTargets()
def resetTargets(self):
self.resetRedSpecial()
self.resetOrangeSpecial()
self.tunnelLit = 0
def resetRedSpecial(self):
self.redSpecial = 0
self.redSpecialLit = False
def resetOrangeSpecial(self):
self.orangeSpecialLeft = False
self.orangeSpecialRight = False
self.orangeSpecialLit = False
def advanceRightOrangeSpecial(self):
self.orangeSpecialRight = True
self.setOrangeSpecialLit()
def advanceLeftOrangeSpecial(self):
self.orangeSpecialLeft = True
self.setOrangeSpecialLit()
def setOrangeSpecialLit(self):
if config.ORANGE_SPECIAL_BANK_OPTIONS == config.ORANGE_SPECIAL_BANK_OPTIONS.ONE:
self.orangeSpecialLit = self.orangeSpecialRight or self.orangeSpecialLeft
elif config.ORANGE_SPECIAL_BANK == config.ORANGE_SPECIAL_BANK_OPTIONS.BOTH:
self.orangeSpecialLit = self.orangeSpecialRight and self.orangeSpecialLeft
def advanceRedSpecial(self):
self.redSpecial += 1
if(self.redSpecial == config.RED_SPECIAL_TIMES):
self.redSpecialLit = True
def advanceBonusMultiplier(self):
if self.bonusMultiplier >= 15:
return
if self.bonusMultiplier == 1:
self.bonusMultiplier = 5
return
self.bonusMultiplier *= 2
def setReplayBall(self):
self.replayBall = True
def addPoints(self, points): def addPoints(self, points):
self.points += points self.points += points

View File

@@ -1,4 +1,8 @@
import os import os
from events.SpecialEvent import SpecialEvent
from enum import Enum
ORANGE_SPECIAL_BANK_OPTIONS = Enum("BOTH", "ONE")
# Game Config # Game Config
## Network Config ## Network Config
@@ -9,3 +13,8 @@ OUTPUT_SOCKET_NAME = "/S.flippR_driver.out"
BALLS_PER_GAME = 3 BALLS_PER_GAME = 3
BEGINNING_UPPER_PLAYFIELD_TIME = 5 BEGINNING_UPPER_PLAYFIELD_TIME = 5
BEGINNING_BONUS_TIME = 0 BEGINNING_BONUS_TIME = 0
## Special config
RED_SPECIAL = SpecialEvent.replay
RED_SPECIAL_TIMES = 1
ORANGE_SPECIAL = SpecialEvent.points
ORANGE_SPECIAL_BANK = ORANGE_SPECIAL_BANK_OPTIONS.BOTH

View File

@@ -2,10 +2,11 @@ from Event import Event
class BankEvent(Event): class BankEvent(Event):
def __init__(self, bankSolenoid, name): def __init__(self, bankSolenoid, name, playerState):
self.bankSolenoid = bankSolenoid self.bankSolenoid = bankSolenoid
super().__init__(name) super().__init__(name)
self.playerState = playerState
def trigger(self, _): def trigger(self, target):
super().trigger() super().trigger(target)
self.bankSolenoid.trigger() self.bankSolenoid.trigger()

View File

@@ -6,6 +6,6 @@ class BonusTimeEvent(Event):
self.playerState = playerState self.playerState = playerState
super().__init__("Bonus Time Event") super().__init__("Bonus Time Event")
def trigger(self, _): def trigger(self, target):
super().trigger() super().trigger(target)
self.playerState().addBonusTimeSecond() self.playerState().addBonusTimeSecond()

View File

@@ -3,6 +3,12 @@ from solenoids.BottomLeftBankSolenoid import BottomLeftBankSolenoid
class BottomLeftBankEvent(BankEvent): class BottomLeftBankEvent(BankEvent):
def __init__(self): def __init__(self, playerState):
super().__init__(BottomLeftBankSolenoid(), "Bottom Left Bank Event") super().__init__(BottomLeftBankSolenoid(), "Bottom Left Bank Event", playerState)
def trigger(self, target):
super().trigger(target)
playerState = self.playerState()
playerState.advanceLeftOrangeSpecial()
if playerState.upperPlayfieldTime < 30:
playerState.addUpperPlayfieldTime(5)

View File

@@ -3,6 +3,12 @@ from solenoids.BottomRightBankSolenoid import BottomRightBankSolenoid
class BottomRightBankEvent(BankEvent): class BottomRightBankEvent(BankEvent):
def __init__(self): def __init__(self, playerState):
super().__init__(BottomRightBankSolenoid(), "Bottom Right Bank Event") super().__init__(BottomRightBankSolenoid(), "Bottom Right Bank Event", playerState)
def trigger(self, target):
super().trigger(target)
playerState = self.playerState()
playerState.advanceRightOrangeSpecial()
if playerState.upperPlayfieldTime < 30:
playerState.addUpperPlayfieldTime(5)

28
events/EndBallEvent.py Normal file
View File

@@ -0,0 +1,28 @@
from Event import Event
from events.EndGameEvent import EndGameEvent
from events.StartBallEvent import StartBallEvent
class EndBallEvent(Event):
def __init__(self, playerState):
self.playerState = playerState
super().__init__("End Of Ball Event")
def trigger(self, target):
super().trigger(target)
if self.playerState.replayBall:
StartBallEvent().trigger(None)
return
self.playerState().removeBall()
self.scorePoints()
self.playerState().reset()
if self.playerState().ballsLeft == 0:
EndGameEvent().trigger(None)
def scorePoints(self):
bonus = self.playerState().bonus * self.playerState().bonusMultiplier * 1000
self.playerState().addPoints(bonus)

View File

@@ -9,7 +9,7 @@ class EndGameEvent(Event):
def __init__(self): def __init__(self):
super().__init__("End Game Event") super().__init__("End Game Event")
def trigger(self, _): def trigger(self, target):
super().trigger() super().trigger(target)
self.flipper.deactivate() self.flipper.deactivate()
sys.exit(0) sys.exit(0)

View File

@@ -1,15 +0,0 @@
from Event import Event
from events.EndGameEvent import EndGameEvent
class EndOfBallEvent(Event):
def __init__(self, playerState):
self.playerState = playerState
super().__init__("End Of Ball Event")
def trigger(self, _):
super().trigger()
self.playerState().removeBall()
if self.playerState().ballsLeft == 0:
EndGameEvent().trigger()

View File

@@ -8,7 +8,7 @@ class EnterUpperPlayfieldEvent(Event):
self.flipper = TopFlipper() self.flipper = TopFlipper()
super().__init__("Enter Upper Playfield Event") super().__init__("Enter Upper Playfield Event")
def trigger(self, _): def trigger(self, target):
super().trigger() super().trigger(target)
self.flipper.activate() self.flipper.activate()
self.playerState().startUpperPlayfieldTimer() self.playerState().startUpperPlayfieldTimer()

View File

@@ -6,6 +6,6 @@ class FlapEvent(Event):
self.flapSolenoid = flapSolenoid self.flapSolenoid = flapSolenoid
super().__init__(name) super().__init__(name)
def trigger(self, _): def trigger(self, target):
super().trigger() super().trigger(target)
self.flapSolenoid.trigger() self.flapSolenoid.trigger()

View File

@@ -7,7 +7,7 @@ class LeaveUpperPlayfieldEvent(Event):
self.flipper = flipper self.flipper = flipper
super().__init__("Leave Upper Playfield Event") super().__init__("Leave Upper Playfield Event")
def trigger(self, _): def trigger(self, target):
super().trigger() super().trigger(target)
self.flipper.deactivate() self.flipper.deactivate()
self.playerState().stopUpperPlayfieldTimer() self.playerState().stopUpperPlayfieldTimer()

View File

@@ -0,0 +1,16 @@
from events.SpecialEvent import SpecialEvent
import config
class OrangeSpecialEvent(SpecialEvent):
def __init__(self, playerState):
super().__init__("Orange Special Event", playerState)
self.points = 200000
def trigger(self, target):
super().trigger(target)
if self.playerState().orangeSpecialLit:
config.ORANGE_SPECIAL(self)
self.playerState().resetOrangeSpecial()

View File

@@ -4,8 +4,8 @@ from Event import Event
class PointEvent(Event): class PointEvent(Event):
def __init__(self, playerState): def __init__(self, playerState):
self.playerState = playerState self.playerState = playerState
super().__init__("Point Event Event") super().__init__("Point Event")
def trigger(self, target): def trigger(self, target):
super().trigger() super().trigger(target)
self.playerState().addPoints(target.points) self.playerState().addPoints(target.points)

View File

@@ -6,6 +6,6 @@ class PopEvent(Event):
self.popSolenoid = popSolenoid self.popSolenoid = popSolenoid
super().__init__(name) super().__init__(name)
def trigger(self, _): def trigger(self, target):
super().trigger() super().trigger(target)
self.popSolenoid.trigger() self.popSolenoid.trigger()

15
events/RedSpecialEvent.py Normal file
View File

@@ -0,0 +1,15 @@
from events.SpecialEvent import SpecialEvent
import config
class RedSpecialEvent(SpecialEvent):
def __init__(self, playerState):
super().__init__("Red Special Event", playerState)
self.points = 990000
def trigger(self, target):
super().trigger(target)
if self.playerState().redSpecialLit:
config.RED_SPECIAL(self)
self.playerState().resetRedSpecial()

View File

@@ -7,6 +7,6 @@ class RightKickerEvent(Event):
self.rightKickerSolenoid = RightKickerSolenoid() self.rightKickerSolenoid = RightKickerSolenoid()
super().__init__("Right Kicker Event") super().__init__("Right Kicker Event")
def trigger(self, _): def trigger(self, target):
super().trigger() super().trigger(target)
self.rightKickerSolenoid.trigger() self.rightKickerSolenoid.trigger()

19
events/SpecialEvent.py Normal file
View File

@@ -0,0 +1,19 @@
from Event import Event
class SpecialEvent(Event):
def __init__(self, name, playerState):
super().init(name)
self.playerState = playerState
def replay(self):
self.playerState.setReplayBall()
def extra_ball(self):
self.playerState.addBall()
def points(self):
self.playerState.addPoints(self.points)
def super_bonus(self):
pass

29
events/SpinnerEvent.py Normal file
View File

@@ -0,0 +1,29 @@
from Event import Event
from time import time
class SpinnerEvent(Event):
def __init__(self, playerState):
super().__init__("Spinner Event")
self.playerState = playerState
self.activationTime = time()
def trigger(self, target):
super().trigger(target)
if time() - self.activationTime > 10:
self.activationTime = time()
return
self.scorePoints()
def scorePoints(self):
playerState = self.playerState()
timePassed = time() - self.activationTime
if 1 <= timePassed < 1.5:
playerState.addPoints(100000)
elif 1.5 <= timePassed < 2:
playerState.addPoints(150000)
elif 2 <= timePassed < 5:
playerState.addPoints(200000)
elif timePassed >= 5:
playerState.addPoints(500000)

15
events/StartBallEvent.py Normal file
View File

@@ -0,0 +1,15 @@
from Event import Event
from solenoids.OutHoleSolenoid import OutHoleSolenoid
from solenoids.MainFlipper import MainFlipper
class StartBallEvent(Event):
def __init__(self):
self.flipper = MainFlipper()
self.outHoleSolenoid = OutHoleSolenoid()
super().__init__("Start Ball Event")
def trigger(self, target):
super().trigger(target)
self.flipper.activate()
self.outHoleSolenoid.trigger()

View File

@@ -9,7 +9,7 @@ class StartGameEvent(Event):
self.outHoleSolenoid = OutHoleSolenoid() self.outHoleSolenoid = OutHoleSolenoid()
super().__init__("Start Game Event") super().__init__("Start Game Event")
def trigger(self, _): def trigger(self, target):
super().trigger() super().trigger(target)
self.flipper.activate() self.flipper.activate()
self.outHoleSolenoid.trigger() self.outHoleSolenoid.trigger()

View File

@@ -3,6 +3,11 @@ from solenoids.TopCentralBankSolenoid import TopCentralBankSolenoid
class TopCentralBankEvent(BankEvent): class TopCentralBankEvent(BankEvent):
def __init__(self): def __init__(self, playerState):
super().__init__(TopCentralBankSolenoid(), "Top Central Bank Event") super().__init__(TopCentralBankSolenoid(), "Top Central Bank Event", playerState)
def trigger(self, target):
self.playerState().advanceRedSpecial()

25
events/TunnelEvent.py Normal file
View File

@@ -0,0 +1,25 @@
from Event import Event
class TunnelEvent(Event):
def __init__(self, playerState):
super().__init__("Tunnel Event")
self.playerState = playerState
def trigger(self, target):
super().trigger(target)
self.advanceBonusMultiplier()
self.scoreBonusTunnelPoints()
def advanceBonusMultiplier(self):
self.playerState().advanceBonusMultiplier()
def scoreBonusTunnelPoints(self):
playerState = self.playerState()
if playerState.tunnelLit == 2:
playerState.addPoints(10000)
elif playerState.tunnelLit == 3:
playerState.addPoints(20000)
elif playerState.tunnelLit == 4:
playerState.addPoints(40000)
elif playerState.tunnelLit == 5:
playerState.addPoints(190000)

View File

@@ -6,6 +6,6 @@ class UpperPlayfieldTimeEvent(Event):
self.playerState = playerState self.playerState = playerState
super().__init__("Upper Playfield Time Event") super().__init__("Upper Playfield Time Event")
def trigger(self, _): def trigger(self, target):
super().trigger() super().trigger(target)
self.playerState().addUpperPlayfieldTime(1) self.playerState().addUpperPlayfieldTime(1)

View File

@@ -1,7 +1,7 @@
import inspect import inspect
from events.PointEvent import PointEvent from events.PointEvent import PointEvent
from events.EndOfBallEvent import EndOfBallEvent from events.EndBallEvent import EndBallEvent
from events.RightFlapEvent import RightFlapEvent from events.RightFlapEvent import RightFlapEvent
from events.LeftFlapEvent import LeftFlapEvent from events.LeftFlapEvent import LeftFlapEvent
from events.RightKickerEvent import RightKickerEvent from events.RightKickerEvent import RightKickerEvent
@@ -13,7 +13,10 @@ from events.BottomLeftBankEvent import BottomLeftBankEvent
from events.TopCentralBankEvent import TopCentralBankEvent from events.TopCentralBankEvent import TopCentralBankEvent
from events.BottomRightPopEvent import BottomRightPopEvent from events.BottomRightPopEvent import BottomRightPopEvent
from events.TopLeftPopEvent import TopLeftPopEvent from events.TopLeftPopEvent import TopLeftPopEvent
from events.TunnelEvent import TunnelEvent
from events.RedSpecialEvent import RedSpecialEvent
from events.OrangeSpecialEvent import OrangeSpecialEvent
from events.SpinnerEvent import SpinnerEvent
class EventFactory: class EventFactory:
def __init__(self, targets, currentPlayer): def __init__(self, targets, currentPlayer):
@@ -36,7 +39,7 @@ class EventFactory:
return event return event
def createEndOfBallEvent(self): def createEndOfBallEvent(self):
event = EndOfBallEvent(self.currentPlayer) event = EndBallEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets['Outhole']) self.__registerEventToTarget(event, self.targets['Outhole'])
return event return event
@@ -66,24 +69,49 @@ class EventFactory:
return event return event
def createBottomLeftBankEvent(self): def createBottomLeftBankEvent(self):
event = BottomLeftBankEvent() event = BottomLeftBankEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets["Left Bank"]) self.__registerEventToTarget(event, self.targets["Left Bank"])
return event
def createBottomRightBankEvent(self): def createBottomRightBankEvent(self):
event = BottomRightBankEvent() event = BottomRightBankEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets["Right Bank"]) self.__registerEventToTarget(event, self.targets["Right Bank"])
return event
def createTopCentralBankEvent(self): def createTopCentralBankEvent(self):
event = TopCentralBankEvent() event = TopCentralBankEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets["Top Bank"]) self.__registerEventToTarget(event, self.targets["Top Bank"])
return event
def createTopLeftPopEvent(self): def createTopLeftPopEvent(self):
event = TopLeftPopEvent() event = TopLeftPopEvent()
self.__registerEventToTarget(event, self.targets["Left Pop"]) self.__registerEventToTarget(event, self.targets["Left Pop"])
return event
def createBottomRightPopEvent(self): def createBottomRightPopEvent(self):
event = BottomRightPopEvent() event = BottomRightPopEvent()
self.__registerEventToTarget(event, self.targets["Right Pop"]) self.__registerEventToTarget(event, self.targets["Right Pop"])
return event
def createTunnelEvent(self):
event = TunnelEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets["Canal Button Bottom"])
return event
def createRedSpecialEvent(self):
event = RedSpecialEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets["Special Red"])
return event
def createOrangeSpecialEvent(self):
event = OrangeSpecialEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets["Special Orange"])
return event
def createSpinnerEvent(self):
event = SpinnerEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets["Spinner"])
return event
def __registerEventToTarget(self, event, target): def __registerEventToTarget(self, event, target):
target.on(target.hit_key, event.trigger) target.on(target.hit_key, event.trigger)

View File

@@ -2,7 +2,7 @@ from Target import Target
class LeftInlaneTarget(Target): class LeftInlaneTarget(Target):
def __init__(self): def __init__(self):
super().__init__(100, 'Left Inlane') super().__init__(3000, 'Left Inlane')
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -2,7 +2,7 @@ from Target import Target
class LeftOutlaneTarget(Target): class LeftOutlaneTarget(Target):
def __init__(self): def __init__(self):
super().__init__(100, 'Left Outlane') super().__init__(100000, 'Left Outlane')
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -3,7 +3,7 @@ from Target import Target
class RightInlaneTarget(Target): class RightInlaneTarget(Target):
def __init__(self): def __init__(self):
super().__init__(100, 'Right Inlane') super().__init__(30000, 'Right Inlane')
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -3,7 +3,7 @@ from Target import Target
class FixedTarget1(Target): class FixedTarget1(Target):
def __init__(self): def __init__(self):
super().__init__(0, "Fixed Target 1") super().__init__(30000, "Fixed Target 1")
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -3,7 +3,7 @@ from Target import Target
class FixedTarget2(Target): class FixedTarget2(Target):
def __init__(self): def __init__(self):
super().__init__(0, "Fixed Target 2") super().__init__(30000, "Fixed Target 2")
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -2,7 +2,7 @@ from Target import Target
class FixedTarget3(Target): class FixedTarget3(Target):
def __init__(self): def __init__(self):
super().__init__(100, 'Fixed Target 3') super().__init__(30000, 'Fixed Target 3')
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -3,7 +3,7 @@ from Target import Target
class FixedTarget4(Target): class FixedTarget4(Target):
def __init__(self): def __init__(self):
super().__init__(100, 'Fixed Target 4') super().__init__(30000, 'Fixed Target 4')
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -3,7 +3,7 @@ from Target import Target
class FixedTarget5(Target): class FixedTarget5(Target):
def __init__(self): def __init__(self):
super().__init__(100, 'Fixed Target 5') super().__init__(30000, 'Fixed Target 5')
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -3,7 +3,7 @@ from BankTarget import BankTarget
class LeftBankLeftTarget(BankTarget): class LeftBankLeftTarget(BankTarget):
def __init__(self): def __init__(self):
super().__init__(100, 'Left Bank Left') super().__init__(30000, 'Left Bank Left')
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -3,7 +3,7 @@ from BankTarget import BankTarget
class LeftBankMiddleLeftTarget(BankTarget): class LeftBankMiddleLeftTarget(BankTarget):
def __init__(self): def __init__(self):
super().__init__(100, 'Left Bank Middle Left') super().__init__(30000, 'Left Bank Middle Left')
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -3,7 +3,7 @@ from BankTarget import BankTarget
class LeftBankMiddleRightTarget(BankTarget): class LeftBankMiddleRightTarget(BankTarget):
def __init__(self): def __init__(self):
super().__init__(100, 'Left Bank Middle Right') super().__init__(30000, 'Left Bank Middle Right')
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -3,7 +3,7 @@ from Target import Target
class LeftBankRightTarget(Target): class LeftBankRightTarget(Target):
def __init__(self): def __init__(self):
super().__init__(100, 'Left Bank Right') super().__init__(30000, 'Left Bank Right')
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -3,7 +3,7 @@ from Target import Target
class LeftPopTarget(Target): class LeftPopTarget(Target):
def __init__(self): def __init__(self):
super().__init__(0, "Left Pop") super().__init__(5000, "Left Pop")
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -3,7 +3,7 @@ from Target import Target
class RightPopTarget(Target): class RightPopTarget(Target):
def __init__(self): def __init__(self):
super().__init__(100, 'Right Pop') super().__init__(5000, 'Right Pop')
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -3,7 +3,7 @@ from BankTarget import BankTarget
class RightBankLeftTarget(BankTarget): class RightBankLeftTarget(BankTarget):
def __init__(self): def __init__(self):
super().__init__(100, "Right Bank Left") super().__init__(30000, "Right Bank Left")
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -3,7 +3,7 @@ from BankTarget import BankTarget
class RightBankMiddleTarget(BankTarget): class RightBankMiddleTarget(BankTarget):
def __init__(self): def __init__(self):
super().__init__(100, 'Right Bank Middle') super().__init__(30000, 'Right Bank Middle')
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -3,7 +3,7 @@ from BankTarget import BankTarget
class RightBankRightTarget(BankTarget): class RightBankRightTarget(BankTarget):
def __init__(self): def __init__(self):
super().__init__(100, "Right Bank Right") super().__init__(30000, "Right Bank Right")
def hit(self): def hit(self):
super().hit() super().hit()

View File

@@ -2,7 +2,7 @@ from Target import Target
class OutholeTarget(Target): class OutholeTarget(Target):
def __init__(self): def __init__(self):
super().__init__(100, 'Outhole') super().__init__(0, 'Outhole')
def hit(self): def hit(self):
super().hit() super().hit()

19
test.py
View File

@@ -1,8 +1,23 @@
from utils.Singleton import Singleton class A:
class A(metaclass=Singleton):
def __init__(self, a): def __init__(self, a):
self.a = a self.a = a
def printa(self): def printa(self):
print(self.a) print(self.a)
def test2(self, _):
print(34)
def test3(self):
print(5)
class B(A):
def test(self, fun):
fun(self)
def test3(self, a):
super().test3()
print(a)
class C:
def __init__(self):
self.foo()
def foo(self):
self.a = 10