FreeBasic
Главная
Вход
Регистрация
Четверг, 21.11.2024, 14:04Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Игра Быки коровы для мобильного
haavДата: Суббота, 08.02.2014, 21:50 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Я намучался искать в сети эту игрушку для мобильника. Есть одна игра, но она с буквами, а мне надо с цифрами (привык) Как то так получилось, что я в детстве очень много играл в нее, поэтому для Windows писал свою, а теперь не найдя готового варианта для мобильника, решил написать и под мобильную платформу. Сразу скажу, что в игре нет графики, все сделано в текстовом режиме. Лично мне больше не надо. Самое главное чтобы компьютер загадывал число, выводил результаты , а я его (число) мог за несколько (в игре 7) попыток отгадать. Код немного сумбурный, уж прошу прощения у тех кто захочет в нем разобраться.

И так сам код:


Код
10 cls
50 KOR% = 0
51 BIK% = 0
52 COUNT% = 0
53 SLUCH$ = ""
60 gosub 2000
65 print "Bulls and Cows"
66 print " "
70 if fire(0) then goto 100
80 goto 70
100 Input "Input number", CHISLO$
110 if len(CHISLO$) <> 4 then goto 100  
120 PV$ = mid$(CHISLO$,1,1)  
130 if PV$<>"1" and  PV$<>"2" and  PV$<>"3" and  PV$<>"4" and  PV$<>"5" and  PV$<>"6" and  PV$<>"7" and  PV$<>"8" and  PV$<>"9" then goto 100
135 PV1$  = PV$
140 PV$ = mid$(CHISLO$,2,1)
150 if PV$<>"1" and  PV$<>"2" and  PV$<>"3" and  PV$<>"4" and  PV$<>"5" and  PV$<>"6" and  PV$<>"7" and  PV$<>"8" and  PV$<>"9" then goto 100
152 if PV1$ = PV$ then goto 100
155 PV2$  = PV$
160 PV$ = mid$(CHISLO$,3,1)
170 if PV$<>"1" and  PV$<>"2" and  PV$<>"3" and  PV$<>"4" and  PV$<>"5" and  PV$<>"6" and  PV$<>"7" and  PV$<>"8" and  PV$<>"9" then goto 100
172 if PV1$ = PV$ or PV2$ = PV$ then goto 100
175 PV3$  = PV$
180 PV$ = mid$(CHISLO$,4,1)
190 if PV$<>"1" and  PV$<>"2" and  PV$<>"3" and  PV$<>"4" and  PV$<>"5" and  PV$<>"6" and  PV$<>"7" and  PV$<>"8" and  PV$<>"9" then goto 100
195  if PV$ = PV1$ or PV$ = PV2$ or PV$ = PV3$ then goto 100
200 PV4$  = PV$
210 If Mid$(SLUCH$,1,1)=PV1$ Then BIK% = BIK% + 1
220 If Mid$(SLUCH$,1,1)=PV2$  Or Mid$(SLUCH$,1,1)=PV3$ Or Mid$(SLUCH$,1,1)=PV4$ Then KOR% = KOR% + 1
230 If Mid$(SLUCH$,2,1) = PV2$ Then BIK% = BIK% + 1
240 If Mid$(SLUCH$,2,1)=PV1$ Or Mid$(SLUCH$,2,1)=PV3$ Or Mid$(SLUCH$,2,1)=PV4$ Then KOR% = KOR% + 1
250 If Mid$(SLUCH$,3,1)=PV3$ Then BIK% = BIK% + 1
260 If Mid$(SLUCH$,3,1)=PV1$ Or Mid$(SLUCH$,3,1)=PV2$ Or Mid$(SLUCH$,3,1)=PV4$ Then KOR% = KOR% + 1
270 If Mid$(SLUCH$,4,1)=PV4$ Then BIK% = BIK% + 1
280 If Mid$(SLUCH$,4,1)=PV1$ Or Mid$(SLUCH$,4,1)=PV2$ Or Mid$(SLUCH$,4,1)=PV3$ Then KOR% = KOR% + 1
290 print CHISLO$ + "   " + str$(BIK%) + "B" + str$(KOR%) + "K"
300 COUNT% = COUNT% + 1
310 if BIK% = 4 then goto 500    
320 BIK% = 0 : KOR% = 0
330 if COUNT% < 7 then goto 70
340 goto 520

500 if MESSAGEFORM("Congratulations!!","Yes","No","","You Win! Play again?") = -1 then END
510 goto 10
520 if MESSAGEFORM("Too Bad!!","Yes","No","","You Lost! Play again?") = -1 then END
550 goto 10

2000 ONE%=5+mod(rnd(1),5)
2010 TWO%=5+mod(rnd(1),5)
2020 If TWO%=ONE% Then GoTo 2010
2030 THREE%=5+mod(rnd(1),5)
2040 If THREE%=ONE% Or THREE%=TWO% Then GoTo 2030
2050 FOUR%=5+mod(rnd(1),5)
2060 If FOUR%=ONE% Or FOUR%=TWO% Or FOUR%=THREE% Then GoTo 2050
2070 SLUCH$  = str$(ONE%) + str$(TWO%) + str$(THREE%) + str$(FOUR%)
2080 return

А это скомпилированный файл, на случай если кто-то просто хочет такую же игру, но не имеет понятия в программировании:
Прикрепления: Bulls_and_Cows.jar (32.9 Kb)


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
haavДата: Воскресенье, 09.02.2014, 06:52 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Я забыл написать принцип и собственно вообще как играть.
И так компьютер загадывает четырехзначное число, при этом в данном числе не может быть нулей и каждое из этих чисел уникальное. То есть такого числа компьютер загадать не может:
1204 или 1255

Зато такое может: 1234 или 5639 ....

Игрок не зная этого числа , может 7 раз ввести любые четырехзначные числа. И на основе этих семи чисел , подключив логическое мышление, разгадывает то, что загадал компьютер. Почему именно 7, наверно потому что мне всегда хватало 7 вариаций чтобы разгадать.

Теперь сам принцип мышления:

Например компьютер загадал число 1357

Вы первый раз вводите число 1234

Если посмотреть на эти два числа и сравнить, то ясно видно, что в обоих числах есть два совпадения (1 и 3) . При том 1 даже стоит на своем месте, ей компьютер присваивает статус "быка". Зато число 3 хоть и присутствует в числе , но стоит не на своем месте, ей компьютер присваивает статус "корова". В результате компьютер вернет: 1B1K (или 1 бык и 1 корова).

Возьмем два примера:

1) игрок ввел два значения из семи:
 
1234  (2K)
5678  (2K)

Если посмотреть внимательно на эти два числа, то становится ясно, что цифры 9 в этом числе не может быть по определению. Ведь в первом числе компьютер нашел 2 числа. Второе число не имеет сходства с первым и в нем так же компьютер нашел два числа. То есть нам нужно будет искать уже в 8 числах вместо 9.

2) Игрок уже успел ввести 4 значения:

1234 (2К)
4691 (2К)
8917 (2К)
3186 (1К)

Если присмотреться внимательно на цифру 1 , то становится ясно что ее в числе быть не может. Почему? Обратите внимание, что в каждом из четырех чисел, 1 стоит на разных местах, но нигде ей не присвоен статус "Бык" . Если бы 1 была в числе, то в одном варианте компьютер бы вернул что она является "быком" или попросту стоит на своем месте. Например если бы единичка стояла бы первой, то в первом варианте было бы возвращено (1Б1К).

Вот такими умозаключениями и разгадывается число.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
haavДата: Среда, 12.02.2014, 12:41 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Сделал чуть поудобнее набор цифр (без диалога), да небольшую картинку (типа заставки). Мне не хотелось перегружать архив картинками, поэтому только для экрана 240х320. Кому нужны другие размеры , меняйте размер картинки и изменяйте циферки в коде . У меня все размеры жестко привязанные к моему экрану. Для заставки использовал эту картинку:



Сам код:


Код
5 gelload "bg1","bg1.gif"
10 cls
30 iTemp1% = 1:iTemp2% = 1:iTemp3% = 1:iTemp4% = 1: iFlagConfirm% = 0
40 iValue% = 1
41 iCounterInput% = 1
50 KOR% = 0
51 BIK% = 0
52 COUNT% = 0
53 SLUCH$ = ""
55 drawgel "bg1",0,0
60 gosub 2000
65 sleep 2000
66 cls
67 print " "
68 gosub 1600
69 gosub 1500
70 gosub 700    
75 if iFlagConfirm% = 1 then goto 90
80 goto 70
90 iFlagConfirm% = 0
110 if len(CHISLO$) <> 4 then goto 70    
120 PV$ = mid$(CHISLO$,1,1)    
130 if PV$<>"1" and  PV$<>"2" and  PV$<>"3" and  PV$<>"4" and  PV$<>"5" and  PV$<>"6" and  PV$<>"7" and  PV$<>"8" and  PV$<>"9" then goto 70
135 PV1$  = PV$
140 PV$ = mid$(CHISLO$,2,1)
150 if PV$<>"1" and  PV$<>"2" and  PV$<>"3" and  PV$<>"4" and  PV$<>"5" and  PV$<>"6" and  PV$<>"7" and  PV$<>"8" and  PV$<>"9" then goto 70
152 if PV1$ = PV$ then goto 70
155 PV2$  = PV$
160 PV$ = mid$(CHISLO$,3,1)
170 if PV$<>"1" and  PV$<>"2" and  PV$<>"3" and  PV$<>"4" and  PV$<>"5" and  PV$<>"6" and  PV$<>"7" and  PV$<>"8" and  PV$<>"9" then goto 70
172 if PV1$ = PV$ or PV2$ = PV$ then goto 70
175 PV3$  = PV$
180 PV$ = mid$(CHISLO$,4,1)
190 if PV$<>"1" and  PV$<>"2" and  PV$<>"3" and  PV$<>"4" and  PV$<>"5" and  PV$<>"6" and  PV$<>"7" and  PV$<>"8" and  PV$<>"9" then goto 70
195  if PV$ = PV1$ or PV$ = PV2$ or PV$ = PV3$ then goto 70
200 PV4$  = PV$
210 If Mid$(SLUCH$,1,1)=PV1$ Then BIK% = BIK% + 1
220 If Mid$(SLUCH$,1,1)=PV2$  Or Mid$(SLUCH$,1,1)=PV3$ Or Mid$(SLUCH$,1,1)=PV4$ Then KOR% = KOR% + 1
230 If Mid$(SLUCH$,2,1) = PV2$ Then BIK% = BIK% + 1
240 If Mid$(SLUCH$,2,1)=PV1$ Or Mid$(SLUCH$,2,1)=PV3$ Or Mid$(SLUCH$,2,1)=PV4$ Then KOR% = KOR% + 1
250 If Mid$(SLUCH$,3,1)=PV3$ Then BIK% = BIK% + 1
260 If Mid$(SLUCH$,3,1)=PV1$ Or Mid$(SLUCH$,3,1)=PV2$ Or Mid$(SLUCH$,3,1)=PV4$ Then KOR% = KOR% + 1
270 If Mid$(SLUCH$,4,1)=PV4$ Then BIK% = BIK% + 1
280 If Mid$(SLUCH$,4,1)=PV1$ Or Mid$(SLUCH$,4,1)=PV2$ Or Mid$(SLUCH$,4,1)=PV3$ Then KOR% = KOR% + 1
290 print "   " + CHISLO$ + "   " + str$(BIK%) + "B" + str$(KOR%) + "K"
300 COUNT% = COUNT% + 1
310 if BIK% = 4 then goto 500      
320 BIK% = 0 : KOR% = 0
325 1420 iTemp1% = 1 : iTemp2% = 1 : iTemp3% = 1 : iTemp4% = 1:  iCounterInput% = 1 : iValue% = 1
326 gosub 1600 : gosub 1500
330 if COUNT% < 7 then goto 70
340 goto 520

500 if MESSAGEFORM("Congratulations!!","Yes","No","","You Win! Play again?") = -1 then END
510 goto 10
520 if MESSAGEFORM("Too Bad!!","Yes","No","","You Lost! Play again?") = -1 then END
550 goto 10

700 if up(0) then gosub  1000
710 if down(0) then gosub  1100
720 if left(0) then gosub  1300
730 if right(0) then gosub  1200
740 if fire(0) then gosub  1400
745 sleep 130
750 return

1000 iValue% = iValue% + 1
1010 if iValue%>9 then iValue% = 1
1030 if iCounterInput% = 1 then iTemp1% = iValue%
1031 if iCounterInput% = 2 then iTemp2% = iValue%
1032 if iCounterInput% = 3 then iTemp3% = iValue%
1033 if iCounterInput% = 4 then iTemp4% = iValue%
1035 gosub 1600
1040 gosub 1500
1050 return

1100 iValue% = iValue% - 1
1110 if iValue%<1 then iValue% = 9
1130 if iCounterInput% = 1 then iTemp1% = iValue%
1131 if iCounterInput% = 2 then iTemp2% = iValue%
1132 if iCounterInput% = 3 then iTemp3% = iValue%
1133 if iCounterInput% = 4 then iTemp4% = iValue%
1135 gosub 1600
1140 gosub 1500
1150 return

1200 iCounterInput% = iCounterInput% + 1
1210 if iCounterInput%>4 then iCounterInput% = 1
1220 if iCounterInput% = 1 then iValue% = iTemp1%
1221 if iCounterInput% = 2 then iValue% = iTemp2%
1222 if iCounterInput% = 3 then iValue% = iTemp3%
1223 if iCounterInput% = 4 then iValue% = iTemp4%
1225 gosub 1600
1230 gosub 1500
1250 return

1300 iCounterInput% = iCounterInput% - 1
1310 if iCounterInput%<1 then iCounterInput% = 4
1320 if iCounterInput% = 1 then iValue% = iTemp1%
1321 if iCounterInput% = 2 then iValue% = iTemp2%
1322 if iCounterInput% = 3 then iValue% = iTemp3%
1323 if iCounterInput% = 4 then iValue% = iTemp4%
1325 gosub 1600
1330 gosub 1500
1350 return

1400 CHISLO$ = str$(iTemp1%)+str$(iTemp2%)+str$(iTemp3%)+str$(iTemp4%)
1410 iFlagConfirm% = 1
1430 return

1500 setcolor 0,0,0
1505 drawstring str$(iTemp1%),1*20+65,300
1510 drawstring str$(iTemp2%),2*20+65,300
1520 drawstring str$(iTemp3%),3*20+65,300
1530 drawstring str$(iTemp4%),4*20+65,300
1550 return

1600 setcolor 255,255,255
1610 FILLRECT 1*20+64,299,100,21
1620 setcolor 0,0,0
1630 drawrect  iCounterInput%*20+64,299,10,20
1640 return

2000 ONE%=5+mod(rnd(1),5)
2010 TWO%=5+mod(rnd(1),5)
2020 If TWO%=ONE% Then GoTo 2010
2030 THREE%=5+mod(rnd(1),5)
2040 If THREE%=ONE% Or THREE%=TWO% Then GoTo 2030
2050 FOUR%=5+mod(rnd(1),5)
2060 If FOUR%=ONE% Or FOUR%=TWO% Or FOUR%=THREE% Then GoTo 2050
2070 SLUCH$  = str$(ONE%) + str$(TWO%) + str$(THREE%) + str$(FOUR%)
2080 return

И конечно сам файл во вложении, кому лень компилить
Прикрепления: 7112822.gif (8.0 Kb) · 6306600.jar (41.5 Kb)


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
  • Страница 1 из 1
  • 1
Поиск: