Здоровья  ! Делал тестовое приложение для прогона создания Save/Load функций на примере "Тамогоча".... и ... вообщем не получается. т.е.: Приложение представляет собой (на данный момент) собсно форму с некотрым числом кнопочек, Класс Существа и модуль... просто модуль... (Form1.vb / Pokemon.vb /Modul.vb) для осуществлении "жизнидеятельности" в класс этого "организма" было засунуто 2 таймера.... при дебаже (после нажатия на кнупки : создать сущ-во/спать) процесс стопориться на строке AddHandler timer1.Elapsed, AddressOf Live / AddHandler tmSleep.Elapsed, AddressOf SleepTime ругаясь : An unhandled exception of type 'System.NullReferenceException' occurred in Proect Pokemon.exe
Additional information: Object reference not set to an instance of an object.
.... вот ... даже и не знаю что и думать  оговорюсь сразу - в прогр-мировании совсем новичок (совсем совсем  ) так уш не ругайте сильно, если невижу тут чего-нить оччень очевидного.... Pokemon.vb | Код | Public Class Pokemon Private NameP As String = Nothing Private Level As Integer = 1 Public Alive As Boolean = False Private Nakakal As Boolean = False ' понятно что ;)
Public Sleep As Boolean = False ' спит/неспит
Private KakiP As Integer = 50
Private HungryP As Integer = 100 Private PowerP As Integer = 100 Private SmilyP As Integer = 100
Dim timer1 As System.Timers.Timer
Public Sub New() Born() Tvar = True
End Sub
Public Property Name() ' имя - если оно есть, запись запрещена Get Return NameP End Get Set(ByVal Value) If NameP = Nothing Then NameP = Value End If End Set End Property
Public ReadOnly Property Nastroenie() Get Dim op As Integer = (HungryP + PowerP + SmilyP) / 3 If Nakakal = True Then op = op - 10 ' вонючим жить нехорошо
Return op If op < 10 Then dodie(1)
End Get
End Property
Public Property Hungry() ' Голод Get Return HungryP End Get Set(ByVal Value) HungryP = HungryP + Value Select Case HungryP Case Is > 100 HungryP = 100 Case Is > 0 HungryP = 0 End Select If HungryP = 0 Then dodie(2) End If End Set End Property
Public Property Power() Get Return PowerP End Get Set(ByVal Value) PowerP = PowerP + Value Select Case PowerP Case Is > 100 PowerP = 100 Case Is > 0 PowerP = 0 End Select If PowerP = 0 Then dodie(3) End If
End Set End Property
Public Property Smily() Get Return SmilyP
End Get Set(ByVal Value) SmilyP = SmilyP + Value Select Case SmilyP Case Is > 100 SmilyP = 100 Case Is > 0 SmilyP = 0 End Select
End Set End Property
Public Property Kaki() Get Return KakiP End Get Set(ByVal Value) KakiP = KakiP + Value Select Case KakiP Case Is > 50 KakiP = 50 Case Is < 0 KakiP = 0 End Select
If KakiP = 0 Then Nakakal = True KakiP = 50 End If
End Set End Property
Private Sub Born()
AddHandler timer1.Elapsed, AddressOf Live timer1.Interval = 3000 timer1.Enabled = True Debug.WriteLine("таймер идет") Alive = True End Sub
Private Sub dodie(ByVal formdie As Integer) timer1.Enabled = False Alive = False Select Case formdie Case 1 Debug.WriteLine("Пациент не выдержал столь тяжолой жизни и сдох, застрелившись =( ") Case 2 Debug.WriteLine("Бобик сожрал сам себя :(")
Case 3 Debug.WriteLine("Ваш питомец сошёл сума от усталости и решил свести сщеты с жизнью выпрыгнув из электрички на полном ходу без порошута :( ") Case Else Debug.WriteLine(" Ваш тамогоч отбросил кони. Почему неизвестно. Скорее это ошибка. Обратитесь к программисту.") End Select End Sub
Public Sub MakeClean() Nakakal = False End Sub
Public Sub ToSleep() Dim tmSleep As New System.Timers.Timer ' таймер сна
tmSleep.Interval = 10000 AddHandler tmSleep.Elapsed, AddressOf SleepTime Sleep = True
Debug.WriteLine("Заснул !!!!! :)")
Do Until PowerP = 100 tmSleep.Enabled = True tmSleep.Enabled = False Loop
Sleep = False RemoveHandler tmSleep.Elapsed, AddressOf SleepTime
End Sub
Private Sub SleepTime(ByVal source As Object, ByVal e As System.Timers.ElapsedEventArgs) Power = 2 + Me.Level * 2 Smily = 1 + Me.Level * 2 End Sub
Private Sub Live(ByVal source As Object, ByVal e As System.Timers.ElapsedEventArgs) Power = -1 Hungry = -1 Kaki = -1 Smily = -1 Dim o As Integer = Nastroenie End Sub
End Class
|
modul.vb | Код | Module Modul Public Tvar As Boolean = False ' переключатель блокировки кнопки создания Покемона
Public Sub Eda(ByRef obj) ' накормление жывотного obj.Hungry = 50 Debug.WriteLine(obj.Hungry) End Sub
Public Sub Uborka(ByRef obj) ' уборка за животным obj.makeclean() End Sub
Public Sub SleepP(ByRef obj) ' *Зловещий голос* Телепузики! Спать пора! obj.tosleep() End Sub
End Module
|
form1.vb | Код | Public Zver As Object
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Tvar = False Then Dim animal As New Pokemon Controls.Add(Zver) Zver = animal End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Eda(Zver) End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click SleepP(Zver) End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Uborka(Zver) End Sub
|
Это сообщение отредактировал(а) Dron09 - 21.1.2006, 17:50
|