![]() |
Задачка!!!
Задали мне задачку, знаю токо Блитз3Д(плохо)!!!! Помогите плизз розвязать!!!
Было у парня "А" денег Пошёл он попить соку по "В" денег(Стратил всё "А"денег!!!) Здал пустые бутылки по "С" денег И опять за соком!!! Я помойму формулу сделал, но как привязать цикл??? Неоткажусь, если кто поможет с формулой???!!!;) |
Re: Задачка!!!
Ксли я правельно понял то что ты просил, то вот, надеюсь прально =)
Код:
|
Re: Задачка!!!
Спасибо! Но может я неправильно обяснил, мне нужно обчислить всьо так, чтоб при введении любих чисел(1,2,3,4...), вибивалось количество випитых им бутылок соку!!! Чтоб после окончания первого цикла сбивалась сума из сданых бутылок и здачи, какая отвечяла значением "А" в следующем цыкле! Ну теперь надеюсь понятно обьяснил!!! Если б всьо было так просто, то я и сам б сделал!!! ГГ!!!
|
Re: Задачка!!!
Мда, похоже я мало сплю, сорри что полез, но всё-равно не понимаю объяснения, но эт незначит что ты "не так" объяснил, эт просто я сёдня не в состоянии =) Сорри...
|
Re: Задачка!!!
a#=Input("a:")
b#=Input("b:") c#=Input("c:") s%=0 While a>=b g%=Floor(a/b):a=c*g:s=s+g Wend Print "Выпито:"+s |
Re: Задачка!!!
Спасиб, но у меня примерно такойже код, токо функция Floor стоит после фрази "????????" !!! И чето невиходит, ти ето тестил??? Здачя в киоске важна!! Но с ней я справлюсь!!! Вот мой код, но он неисправен:
Graphics3D 640,480,32,1 Global Drink#= 0 Global J#= 0 fntCom1=LoadFont("Comic Sans MS",25,False,False,False) SetFont fntCom1 Print "1grn. = 1,00" fntCom=LoadFont("Comic Sans MS",20,False,False,False) SetFont fntCom A#=Input$("How mach moneys have a boy???") B#=Input$("How much moneys need a boy to buy 1 juise???") C#=Input$("How much price was empty buttle???") If A# < B# Print "Hi cant to buy a juise!!!" If C# >= B# Then Print "When hi drink oll his juise, hi will die!!!" For r=0 To (J# <= (A# - B#)) D# = A# / B# I# = A# - (D# * B#) F# = D# * C# A# = I# + F# Drink# = Drink# + D# Next Print "Buttles wich he drink " + Floor(Drink#) WaitKey |
Re: Задачка!!!
кол-во бутылок не может быть дробным.
код я тестил. он работал. упс. похоже он работал не правильно. Остаток я не учитывал. |
Re: Задачка!!!
Цитата:
Так что узнать надо? |
Re: Задачка!!!
Цитата:
Найти надо скоко бутылок(сока) он выпил пока у него не кончились деньги!!! Тоесть! я привиду пример с цыфрами!!! Было у парня 20р. а пить хотел он, ужас!!! Вот пошёл он в магазин за соком, сок стоит 3р.(дешевенький ГГГ!)!!! Хватило у него на 6 бутылок (Запомните, здачя 2р.)!!! Купил он их и выпил!!! (1.5л ГГ!:lol: )!!! Пустые бутылки(6 шт.) здал по 0.75р. за каждую!!! Получилось у него 4.5р.! Но у нас здачя с прошлого раза(2р.)! Тоесть в общем у него осталось не 4.5р. а 6.5р. Он опять пошёл в магазин и купил 2 бутилки сока!!!(Здачя 0.5р.) Выпил, сдал, и получил 1.5р. плюс здачя 0.5р. В общем 2р. 2р. на сок не хватит!!!:''(( Так теперь коече уточню!!! То что у нас осталось в коце-неважно! То, скоко он раз ходил за соком, тоже не важно(важно как указать ето в формуле:wallbash: ) Вожно то скоко он выпил бутылок сока!!! (в примере их 8 шт.) Хууу!!! Ну теперь надеюсь понятно обьяснил:( ??? |
Re: Задачка!!!
Halk-DS
по алгоритму все правильно но вот уровень английского тебе надо бы повысить :) к примеру вот так (тут возможно тоже есть ошибки :) ) Цитата:
|
Re: Задачка!!!
a#=Input("a:")
b#=Input("b:") c#=Input("c:") s%=0 While a>=b g%=Floor(a/b) os#=a-(g*b) a=c*g+os s=s+g Wend Print "Выпито:"+s |
Re: Задачка!!!
HolyDel
ето типа кто меньше напишет слов чтоли ? :lol: |
Re: Задачка!!!
2Джимон: Ето типа: "кто мне поможет сделать задачю?"
Спасибо всем, но мой уровень английского-проблема другая! Недавно дотугодумил как исправить баг, заключён в повторении цыкла! Тоесть я пробовал привязать както ето к функциям For .... To..... NEXT !!!!!!! Благодаря сообщениям ХолиДела додумался использовать Repeat Until Всем спасибо! Задачя розвязана!!! И хорошо работает! |
Re: Задачка!!!
! У меня ешо вопрос!!! Можна ли сделать систему кодировки?? Например! есть у нас число 9562814547697752438!!! И из него вытянуть все 4 и 7, чтоб у нас вышло число 447774!!! Или наведу пример проще! 121 -витянуть все 1 и 3 получяется 11 !!! Можна токое сделать?
|
Re: Задачка!!!
С увереностью заявляю: не только можно, но и очень просто.
И помогут тебе в этом цикл, оператор сравнения и операторы Str, Len и Mid. |
Re: Задачка!!!
и еще операторы сложения и присваивания
|
Re: Задачка!!!
Цитата:
Len(...)-Ето я понял (надеюсь!)!!! Ета команда подсчитывает количество символов числа, или там переменной! А команди Str и Mid недогнал крапаль! |
Re: Задачка!!!
str - переводит число в строку, т.е. например число 123 будте строкой "123" синтаксис такой a$=str(b%). ето необходимо чтоюб было можно использовать команду mid$. Она нужна для определения символа / группы символов в строке. Синтаксис такой : h$=mid(s$,первый сивол, скока символов). Например mid("собака",2,3) вернет "оба", а mid("собака",3,3) вернет "бак". В общем твоя задача сведется к приведению числа к строке, как первого так и второго.
Разберем твой пример: 9562814547697752438 число большое и блитз его не держит, поэтому объявим сразу строкой, второе тоже ради удобства. [blitz] a$="9562814547697752438" b$="47" [/blitz] далее определяем скока символов в каждой из строк: [blitz] a$="9562814547697752438" b$="47" ca=len(a) cb=len(b) [/blitz] далее задаем новую строку, в которую будем записывать результат: [blitz] a$="9562814547697752438" b$="47" ca=len(a) cb=len(b) rs$="" [/blitz] далее идет собственно само решение, берем первый символ первой строки и сравнивапес его со всеми символами второй строки, если где-то он есть, то прибавляем его к новой строке (там где результат). [blitz] a$="9562814547697752438" b$="47" ca=Len(a) cb=Len(b) rs="" For i=1 To ca For j=1 To cb If Mid(a,i,1)=Mid(b,j,1) Then rs=rs+Mid(b,j,1) Next Next Print rs [/blitz] у этого метода сразу просматривается огромный минус, все цифры во второй строке должны встречаться только один раз, так как это в условиях не оговаривалось, будем делать так чтобы во второй строке символы могли повторяться. Собственно не мудря слишкомЮ, добавляем exit после rs=rs+Mid(b,j,1) и получаем: [blitz] a$="9562814547697752438" b$="47" ca=Len(a) cb=Len(b) rs="" For i=1 To ca For j=1 To cb If Mid(a,i,1)=Mid(b,j,1) Then rs=rs+Mid(b,j,1):Exit Next Next Print rs [/blitz] вот и все.;) p.s. Надеюсь ты следил за мыслью, а не листингом кода. |
Re: Задачка!!!
Спасибки! Вот я то понял, но не все!!! Даже если у нас в условиях не уговаривалось про повтор числа b, но цикл то наш запущен!!! І програма должна виполнить все варианти от 1 до са !!! Как так! І команда Ехіт значит конец програми, или команди? Я думал что в програме вместо Ехіт используют Еnd! И вобще, какая разница между Еnd и Ехіт!!!
|
Re: Задачка!!!
Ok, ща все объясню.
Exit используется для вывода упраляющего элемента за цикл. В нашем случае exit использовался для предотвращения повторения цифры. Попробуй убрать его и вместо 47 написать 477 или 474, посмотри результат. End - все, оно и в африке все. Используется для выхода из программы. |
Re: Задачка!!!
А скоко цифр поддерживает Блитз(v1.88 )??? И вот еще! У меня эсть число А, нужно найти Х и У если А = Х квадрат + У квадрат!!!
Я зделал так, но есть ли способ зделать ето проще??? A#=Input$("Input #") B#=A#/5 X#=B#*2 Y#=B#*3 Print"X= " +Sqr(X#)+ " Y= " +Sqr(Y#) WaitKey (Просто я уверен, что ето както по деревенски!!!) |
Re: Задачка!!!
a - известно; x,y - нет
a = x^2 + y^2 уравнение с двумя неизвестными - не решается :) ну можно построить график y = sqrt(x^2 - a) где a <= x^2 тогда при XeR получаем y :) |
Re: Задачка!!!
-2147483648..2147483647
|
Re: Задачка!!!
HolyDel
можно создать variable size переменую и тогда количество вариантов ограничивается вот так по 256 ^ bytes :) при bytes > 1024 (1 кб) мы и так получаем офигительные числа а для числа можно юзать и 10 кб и 100 кб и метр ... |
Re: Задачка!!!
2 Jimon, а как? В блитз?
|
Re: Задачка!!!
создаеш в C++ класс, ему прописываеш операторы нужные (ну там сложение, отнимание и тд)
прописываеш функцию перевода в строку и из строки и получаем неплохой тип переменой еще надо будет зделать typedef class my_var my_var и получаем практически уже полноценую переменую :) хотя ето не очень и так :-) |
Re: Задачка!!!
Может и да, но при больших числах в блитце у меня получялись неправильные ответы!!! (Например 3482785430637362507256780974826780 Даже при использовании команды Str)
|
Re: Задачка!!!
Halk-DS
непонял |
Re: Задачка!!!
2 Jimon, ага, все понятно, такую фигню можно и на блитзе замутить, такое число будет иметь максимальный размер -(10^256)+1..10^256-1 и для работы с ним нужны будут свои команды.
2 Jimon (непонял), а че непонятного, он использовал обычные числа блитза, максимальное значение которых я уже писал. |
Re: Задачка!!!
Просто любое число, так как вы говорите отображается в степенях!!! И почемуто ответ неправильный :( !!!
И еще 8) ! Я немогу понять команды sqrt() и Sgn()! Просто в хелпах чють непонятно написано!!! |
Re: Задачка!!!
мат. функции ( операторы)
sqrt - корень квадратный sgn - функция-знак: результат такой же как и от (x/|x|) при условии нулевой погрешности и равенстве нулю в нуле |
Re: Задачка!!!
А разве не Sqr() - Корень квадратный???
|
Re: Задачка!!!
sqrt команды нет, если ты только не использовал какю нибудь DLL
sqr - корень квадратный. |
Re: Задачка!!!
Цитата:
|
Re: Задачка!!!
А когда вписываешь команду Rnd(10) то програма подберает любое дробное число от 0 до 10????
И о команде Sgn!!! Тоесть ето всеравно что Х / Abs(Х) при условии что Х=0 ???? А как команда влияет на ету формулу??? Dim c#(100, 3) Dim dc#(100, 3) For n = 1 To 100 For nn = 1 To 3 c#(n, nn) = c#(n, nn) + dc#(n, nn) dc#(n, nn) = dc#(n, nn) - 0.005 * Sgn(c#(n, nn)) Next Next |
Re: Задачка!!!
Halk-DS
Sgn(0) = 0 Sgn(1) = 1 Sgn(-1) = -1 |
Re: Задачка!!!
2 Jimon!
sgn(x) x<0 sgn=-1 x>0 sgn=1 x=0 sgn=0 |
Re: Задачка!!!
Ага! Тоесть в моём премере, оно показивает противоположное значение слота n,nn в масиве c# ??? Так??
|
Re: Задачка!!!
Dim c#(100, 3) // все переменые обнулены
Dim dc#(100, 3) // все переменые обнулены For n = 1 To 100 For nn = 1 To 3 c#(n, nn) = c#(n, nn) + dc#(n, nn) //операция 0 = 0+0 dc#(n, nn) = dc#(n, nn) - 0.005 * Sgn(c#(n, nn)) //Sqn(0)=0 поетому тут 0=0-0 Next Next вот так вот |
Re: Задачка!!!
Jimon++
все именно так. |
Re: Задачка!!!
Спасибо! Токо щя дошло!!!
|
Re: Задачка!!!
О! А щя я игрушку делаю!!! Теперь хочю создать заставки и вставить их в игру, хотю в формате ГИФ!!! Теперь наскоко помню надо создать несколько екранов, на одном будет сама игра, а на других будут заставки, и потом можно переключять их через команду If....Then, или Case 1 Then.......!!!!!! Ето так??? Но если так, то может кто подскажет как ето делать??? И даже если нетак, то может тоже подкажите как???
|
Re: Задачка!!!
Жирно будет, заводить на заставки поверхность. А если у тебя 10 заставок и разрешение 800*600*32, ето же одна поверхность будет сжирать ни много - ни мало 1,83 метра, на 10 заставок 18,3 метра, что конечно непозволительная рокош. Лутче если нужно показать заствку ее приоставновить игру, загрузить заставку, показать заставку, выгрузить заставку, продолжить игру. Если экран с игрой может потеряться (не использовалась, и не должна была использоватся отчистка экрана), то перед показам заставки экран можно сохранить в какой нибудь буффер.
|
Re: Задачка!!!
Тоесть посредине игры, Влепить команду If .... Then .... EndIf В какой будет указано загружение заставки??? И при етом неочищять буфер с игрой, а после просмотра заставки стереть ее?
|
Re: Задачка!!!
if показать заставку
//игра приостанавливается movie=OpenMovie("gifs/z0.gif") cls while movieplaying(movie) and keydown(57)=0 drawmovie movie,0,0,800,600 flip wend endif //игра продролжается, возможно идет загрузка новых объектов, инициализация врагов, установка параметров героя и т.д. P.S> писалось в браузере поэтому ХЗ. |
Re: Задачка!!!
Я незнаю или чтолибы ето меняет!!! Но в игре заставки токо вначяле, и в случяе проиграша!!! Тоесть невсегда, но вконце!!! Игра будет автоматически выключяться в случяе проиграша!!! И еше, для чево нужно указывать
while movieplaying(movie) and keydown(57)=0 Получяецца, заставка будет играть пока нажат пробел!!! |
Re: Задачка!!!
получается что затавку можно будет пропустить нажав пробел, или она сама кончится.
|
Re: Задачка!!!
Знаешь! Говорят, "Как хорошо помагать людям!!!", А я скажу, что "Как харашо, когда помагают тебе!!!!" !!!!!!!!
|
Re: Задачка!!!
В учебнике Скавена(?) был описан способ организации именно с заставками, только там подразмевалось не физическое выделение N буферов, а селекция алгоритма рисования на основе флага. Т.е. при флаг=1 рисуем квадрат, при флаг=2 рисуем круг и т.п.
Правда мне больше нравится вызов функций. Хотя с другой стороны это накладывает свои трудности: необходимо следить за адекватным возвращением и организовать логику так, чтобы это не повлекло переполнение стека возвратов, утерянные модели и разнообразный мусор. Мою привычку объясняет любовь к С++ и отсутствие лит-ры по b3d в то время, когдя я его изучал. |
Re: Задачка!!!
А у меня ешо вопросы!!!! Гы!!!
1.А хотите я вам покажу свою игру??? 2.А если я вложу две маленькие песенки (до 50КВ вместе) в формате миди, хтоныть может их перефоратить на МР3 ??? 3.Как сделать ефект взрива, если есть несколько его кадров в одном рисунке??? |
Re: Задачка!!!
1. Ессено хотим!
2. ХЗ 3. уточнить нада, 2д, 3д режим? select режим case 2д загружаем анимированный рисунок loadanimimage() рисуем рисунок изменяя кадр drawimage explode,x,y,frame case 3д загружаем анимированную текстуру loadanimtexture() создаем спрайт в главном цикле натягиваем на спрайт(billboard) текстуру изменяя фраме entitytexture spr,expl,frame текстуру желательно грузить добавляя к флагу 256 end select подробнее скажу только как узнаю режим игры(2d, 3d). |
Re: Задачка!!!
Вложений: 1
Игра в 3Д стиле!!! Сюжет такой!!! Ти ставишь мину, какойто парень наривается и БАХ!!! Ето то чем я хотел пользоваться:
If entitycillided() Then ........ EndIf Токо ефект недолжен повторяться!!! Раз, и ждет колизии!!! Здесь песенки и аним.текстура!!! :-) |
Re: Задачка!!!
Еще, баг!!! Достали блин!!! Я незнаю как дклать так, чтоб по окончании звука, он повторялся!!! И если ето недолго, может раскажите, как делать меню??? Обичное!!!
|
Re: Задачка!!!
ну стандартно
[blitz] Graphics 640,480,32,2 SetBuffer BackBuffer() [/blitz] создаем массив под пункты меню: название пункта и цвет [blitz] Graphics 640,480,32,2 SetBuffer BackBuffer() Dim item$(10) Dim iColor(10) [/blitz] заполняем пункты, инициализируем необходимые переменные и грузим шрифт. [blitz] item(0)="New Game" item(1)="Options" item(2)="About" item(3)="Exit" ttmi=3 SetFont LoadFont("Courier New Cyr",24,1) [/blitz] ttmi - количество пунктов. ну и собственно [blitz] While 1 Cls y=50 si=0 For i=0 To ttmi If iColor(i)<255 Then iColor(i)=iColor(i)+24 If iColor(i)>255 Then iColor(i)=255 If Abs(MouseX()-320)<100 And Abs(MouseY()-y)<10 Then si=i:iColor(i)=iColor(i)-32 If iColor(i)<0 Then iColor(i)=0 Color 255,iColor(i),iColor(i) Text 320,y,item(i),1,1 y=y+24 Next If MouseDown(1) Select si Case 0 Exit Case 3 End End Select EndIf Color 0,255,0 Text 10,10,item(si) Flip Wend [/blitz] цикл, 1 - оно всегда 1, такчто цикл будет крутиться вечно отчищаем экран, задаем Y - позиция пункта меню по оси Y, присваиваем переменной SI значение 0. переменная SI означает выбранный пункт меню. запускаем цикл, где перебираем все пункты. там: увеличиваем значение цвет пункта на 24 проверяем не превысило ли оно 255, если превысило то присваиваем 255 [blitz] If Abs(MouseX()-320)<100 And Abs(MouseY()-y)<10 Then si=i:iColor(i)=iColor(i)-32 [/blitz] ето означает что выбран I-тый пункт. уменьшаем значение цвета I-того пункта на 32. выбранный пункт становится i-тым (переменную si помниш?) далее: [blitz] Color 255,iColor(i),iColor(i) Text 320,y,item(i),1,1 y=y+24 [/blitz] устанавливаем цвет пункта, чем меньше цвет тем пункт краснее. рисуем пункт, увеличиваем y на 24 (щтоб следующий пункт рисовался ниже). [blitz] If MouseDown(1) Select si Case 0 Exit Case 3 End End Select EndIf [/blitz] по нажатию на мыш, проверяем выбранный пункт, и в зависимости от значения Si делаем что, то, например если si равно трем (выход) то завершаем работу программы. [blitz] Color 0,255,0 Text 10,10,item(si) [/blitz] ну это просто чтоб показать что работает. весь код: [blitz] Graphics 640,480,32,2 SetBuffer BackBuffer() Dim item$(10) Dim iColor(10) item(0)="New Game" item(1)="Options" item(2)="About" item(3)="Exit" ttmi=3 xit=0 SetFont LoadFont("Courier New Cyr",24,1) While 1 Cls y=50 si=0 For i=0 To ttmi If iColor(i)<255 Then iColor(i)=iColor(i)+24 If iColor(i)>255 Then iColor(i)=255 If Abs(MouseX()-320)<100 And Abs(MouseY()-y)<10 Then si=i:iColor(i)=iColor(i)-32 If iColor(i)<0 Then iColor(i)=0 Color 255,iColor(i),iColor(i) Text 320,y,item(i),1,1 y=y+24 Next If MouseDown(1) Select si Case 0 Exit Case 3 End End Select EndIf Color 0,255,0 Text 10,10,item(si) Flip Wend [/blitz] |
Re: Задачка!!!
Спасибо!!! Но как делать звук!!! Я вставляю песню, она играет! А когда она кончяется, я хочю её снова проиграть!!! И некак неполучяется!!! А с тем взривом, тож нелади!!!
Explo=LoadAnimTexture("boomstrip.jpg",256,64,64,0, 39) BomSprite=CreateSprite() А в главном цикле пишу EntityTexture Explo,BomSprite,39 А оно мне ошыбку выдаёт!!! |
Re: Задачка!!!
песня:
chMusic=PlayMusic("Ghost live score.mp3") в главном цикле if ChannelPlaying(chMusic)=0 then chMusic=PlayMusic("Ghost live score.mp3") взрыв: ессено он тебе будет ошибку выдавать, 39-ого кадра нет. 0..38 - как раз 39 (параметр функции лоаданимтекстуре) в главном цикле надо ихменять значемине от 0 до 38. ночью скину пример. |
Re: Задачка!!!
Спасибо! Окей!!!
От после етого! Зделаю заставки!!! Повтыкаю!!! И выложу игру!!! От я конечно попробую всё сжать, но сейчяс весит около 9МВ!!! Моя первая игра!!! С вашими советами и моими усилиями!!! УРААА!!!! |
Re: Задачка!!!
А где пример??? :( !!
Я уж повсякому пробовал!!! Но сейчяс спрайт есть, а текстуры на нём нет!!! Белый такой квадратик!!! |
Re: Задачка!!!
Вложений: 2
извиняй, вот:
|
Re: Задачка!!!
Спасибо! Попробую разобраться!!!
|
Re: Задачка!!!
Парни! Я с вами! Еще незабыл!!! Еще немного времени и я всьо зделаю!!!! Скоро изложу!!!!
|
Часовой пояс GMT +4, время: 07:37. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot