Много-много лет назад, уже не помню сколько, писал под MSDOS програмки, в основном
на паскале, так как его долбали в то время у нас в универе.
А в свободное время баловался QBasic и Turbo Basic , мне бейсик нравился больше чем паскаль,
хотя в то время паскаль знал намного лучше и глубже.
Потом в универе пересел на Дельфи, курсовую и диплом именно на Дельфях писал.
А в свободное от учений время бейсиком занимался. Раздобыл VB 1, неделю разбирался, что и как, очеень непривычной версия после дельфей казалась)))
И накатал простенькую игрушку, на форму надо скинуть пикчебокс и пару кнопок.
Вот листинг:
DefInt A-Z
Option Base 1
Dim Shared aa As Integer
Dim Shared osn(28) As Integer
Dim Shared rsx(28) As Integer
Dim Shared rsy(28) As Integer
Dim Shared sta(28) As Integer
Dim Shared vyb1 As Integer
Dim Shared vyb2 As Integer
Dim Shared mx As Integer
Dim Shared my As Integer
Dim chx As Integer
Dim chy As Integer
Dim cn As Integer
Dim cz As Integer
Dim v1 As Integer
Dim q As Double
Declare Function sndPlaySound% Lib "MMSYSTEM.DLL" (ByVal lpszSoundName$, ByVal wFlags%)
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_NODEFAULT = &H2
Const SND_LOOP = &H8
Const SND_NOSTOP = &H10
Dim SoundName$
Dim wFlags%
Dim x%
Sub kwad1 (xx As Integer, yy As Integer)
pic1.Line (xx, yy)-(xx + 40, yy + 40), QBColor(14), BF
pic1.Line (xx, yy)-(xx + 40, yy + 40), QBColor(8), B
End Sub
Sub kwad2 (xx As Integer, yy As Integer)
pic1.Line (xx, yy)-(xx + 40, yy + 40), QBColor(13), BF
pic1.Line (xx, yy)-(xx + 40, yy + 40), QBColor(8), B
End Sub
Sub kwad0 (xx As Integer, yy As Integer)
pic1.Line (xx, yy)-(xx + 40, yy + 40), QBColor(15), BF
End Sub
Sub nach ()
For i = 1 To 50
Randomize
a% = Int(28 * Rnd + 1)
b% = Int(28 * Rnd + 1)
m% = osn(a%): osn%(a%) = osn(b%): osn(b%) = m%
Next i
For i = 1 To 28
Call kwad1(rsx(i), rsy(i))
If sta(1) = 255 Then pic1.PSet (rsx(i) + 1, rsy(i) + 6), QBColor(14): pic1.Print osn(i)
Next i
End Sub
Sub pic1_MouseMove (Button As Integer, Shift As Integer, x As Single, Y As Single)
mx = x: my = Y
End Sub
Sub pic1_Click ()
vyb1 = 0: vyb2 = 0: cz = 0
For i = 1 To 28
If mx >= rsx(i) And mx <= (rsx(i) + 40) And my >= rsy(i) And my <= (rsy(i) + 40) And sta(i) = 255 Then cz = i
Next i
If cn = 1 Then vyb1 = cz
If cn = 2 Then vyb2 = cz
End Sub
Sub chek ()
akm& = pic1.Point(10, 10)
For i = 1 To 28
If sta(i) = 0 Then GoTo chee
GoTo www
chee:
If akm& = pic1.Point(rsx(i) + 10, rsy(i) - 10) And akm& = pic1.Point(rsx(i) + 30, rsy(i) - 10) Then pic1.PSet (rsx(i) + 1, rsy(i) + 6), QBColor(14): pic1.Print osn(i): sta(i) = 255: GoTo www
If akm& = pic1.Point(rsx(i) + 10, rsy(i) + 50) And akm& = pic1.Point(rsx(i) + 30, rsy(i) + 50) Then pic1.PSet (rsx(i) + 1, rsy(i) + 6), QBColor(14): pic1.Print osn(i): sta(i) = 255:
www:
Next i
End Sub
Sub winer ()
pic1.Line (10, 10)-(200, 200), QBColor(12), BF
pic1.PSet (10, 20): pic1.Print " you win"
SoundName$ = "C:\WINDOWS\Media\tada.wav" ' The file to play
wFlags% = SND_ASYNC Or SND_NODEFAULT
x% = sndPlaySound(SoundName$, wFlags%)
End Sub
Sub tras ()
counn = 0
For i = 1 To 28
If sta(i) = 16 Then counn = counn + 1
Next i
If counn >= 28 Then Call winer
End Sub
Sub com1_Click ()
com1.visible = 0
aa = 1
rrr: aa = 1
pic1.Line (5, 5)-(300, 300), QBColor(15), BF
Call init
Call nach
aaa:
q = DoEvents()
If aa = 2 Then GoTo rrr
If cn = 1 And vyb1 > 0 Then Call kwad2(rsx(vyb1), rsy(vyb1)): pic1.PSet (rsx(vyb1) + 1, rsy(vyb1) + 6), QBColor(13): pic1.Print osn(vyb1): cn = 2: v1 = vyb1: GoTo bbb
GoTo aaa
bbb:
q = DoEvents()
If aa = 2 Then GoTo rrr
If vyb2 = 0 Then GoTo bbb
If v1 <> vyb2 And vyb2 > 0 And osn(v1) + osn(vyb2) = 12 Then Call kwad0(rsx(v1), rsy(v1)): Call kwad0(rsx(vyb2), rsy(vyb2)): sta(v1) = 16: sta(vyb2) = 16: Call chek: Call tras: cn = 1: GoTo aaa
If vyb2 > 0 And v1 <> vyb2 And osn(v1) + osn(vyb2) <> 12 Then Call kwad1(rsx(v1), rsy(v1)): pic1.PSet (rsx(v1) + 1, rsy(v1) + 6), QBColor(14): pic1.Print osn(v1): cn = 1: GoTo aaa
GoTo bbb
End Sub
Sub init ()
cn = 1
osn(1) = 1: osn(2) = 0: osn(3) = 2: osn(4) = 2: osn(5) = 3
osn(6) = 3: osn(7) = 4: osn(8) = 4: osn(9) = 4: osn(10) = 5
osn(11) = 5: osn(12) = 5: osn(13) = 6: osn(14) = 6: osn(15) = 6
osn(16) = 6: osn(17) = 7: osn(18) = 7: osn(19) = 7: osn(20) = 8
osn(21) = 8: osn(22) = 8: osn(23) = 9: osn(24) = 9: osn(25) = 10
osn(26) = 10: osn(27) = 11: osn(28) = 12
rsy(1) = 20: rsy(2) = 61: rsy(3) = 61: rsy(4) = 102: rsy(5) = 102
rsy(6) = 102: rsy(7) = 143: rsy(8) = 143: rsy(9) = 143: rsy(10) = 143
For i = 11 To 15: rsy(i) = 184: Next i
For i = 16 To 21: rsy(i) = 225: Next i
For i = 22 To 28: rsy(i) = 266: Next i
rsx(1) = 200: rsx(2) = 180: rsx(3) = 221
rsx(4) = 160: rsx(5) = 201: rsx(6) = 242
mm = 99
For i = 7 To 10: mm = mm + 41: rsx(i) = mm: Next i
mm = 79
For i = 11 To 15: mm = mm + 41: rsx(i) = mm: Next i
mm = 59
For i = 16 To 21: mm = mm + 41: rsx(i) = mm: Next i
mm = 39
For i = 22 To 28: mm = mm + 41: rsx(i) = mm: Next i
For i = 1 To 21: sta(i) = 0: Next i
sta(1) = 255
For i = 22 To 28: sta(i) = 255: Next i
End Sub
Sub com2_Click ()
If aa = 1 Then aa = 2
End Sub
Если выйграть, то раздаётся победный звук , использовал API )))
Сейчас смотрю на этот листинг, и понимаю, насколько коряво, и во многом даже сложно,
сейчас я совершенно по иному бы написал...
Сейчас програмлю уже на дельфи 7 , и VB6 , пробовал на VB,net но очень не понравилось,
среда программирования эстетически не подходит, пропадает чувство програмирования, скорее пользователем
себя чувствуешь, как в ворде или фотошопе... перейду окончательно только в будующей версии, а пока теоретически изучаю,
там есть что поизучать.