Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Проекты на MidletPascal

Ответ
 
Опции темы
Старый 14.12.2007, 15:22   #1
Kurdt
ПроЭктировщик
 
Регистрация: 28.03.2007
Сообщений: 194
Написано 7 полезных сообщений
(для 25 пользователей)
Игрушка для детей на mp

Вот давно писал одну игрушку выложу сорсы мож кому интиресно будет
Это сорсы для обычного телефона игра написана для управление таг ридером телефоном нокия тоесть к прикосновениям к магнитным карточкам на рисунках.
Весь прожект не выложу
program tag_game;
uses cnv2;
Const
			{trueAnswer = 'Правильный ответ !!!'; // no comment
			szInaccessibleState = 'переход к состоянию ID в данный момент невозможеH';//Текст, который будет выводиться, если переход к состоянию ID в данный момент невозможен.
			SZstateNotYetVisited = 'Тут пока тебе еще нельзя ити'; // еще непосещенное место
			szUsedState = 'Уже были тут'; //Текст, который будет выводиться, когда данный тэг и соответствующее ему состояние уже было использовано в игре.
			szSearchFor = 'Ищите персонажа '; // +зайчик
			szMountainText = 'szMountainText'; // текст на горе 
			szMountainGo   = 'Ответ неверен идем на гору там потусуемся 2 минуты'; // text before go to Mountain
			szMountainHelp = 'szMountainHelp'; //
			szNotAnswer =    'Не ответ на вопрос !!!!';  	// Появляется, когда пользователь указал тег, который не является ответом на вопрос, заданный в данном состоянии.
			szMessageNotHelpYet = 'Сава еще спит падайдите плиз папоже'; // если не прошло еще 3 минуты
			szReturnFromMount = 'возвращаемся з горы '; // возвращаемся з горы когда подождали 2 минуты
			imgMountain = 3; // номер Изображение горы, которое появляется, когда пользователя послали на гору, если он неправильно ответил на какой-то вопрос
			imgFilin = 4 ;  // картинка филина справка
			Mounttag = 11; // тег горы
			helpTag = 0; // тег справки
			Time2M = 120000 ; // две минуты
			time3S = 	3000 ; // 3 секунды
			time3m = 180000; // 3 minutes
			NcharOnline=20; // количество символов в строке
			charheigh = 7; // высота символа
			charwidth=6;
			lineOnScreen=9; // количество строк на экране
			}
			 trueAnswer = 'Hienoa! Oikea vastaus.';
szInaccessibleState = 'En voi auttaa sinua vielд.';
szUsedState = 'Olen jo auttanut sinua.';
szSearchFor = 'Right, but search for a character character_name';
szMountainText = 'Olette nyt vuorella. Teidдn tдytyy odottaa tддllд hiiren hiljaa kaksi minuuttia ennekuin voitte jatkaa peliд.';
szMountainGo   = 'Vastaus oli vддrд. Menkдд vuorelle mietiskelemддn.';
szMountainHelp = 'Vuori lцytyy saunasta.';
szNotAnswer =    'Tдmд ei ole vastaus kysymykseen.';
szMessageNotHelpYet = 'Pцllц on pдivдunilla. Tulkaa uudelleen hetken kuluttua.';
szReturnFromMount = ' odottaa vastaustanne. Voitte nyt mennд kokeilemaan uudestaan.';
			
			
			
			SZstateNotYetVisited = 'En voi auttaa sinua vielд'; // еще непосещенное место




			imgMountain = 4; // номер Изображение горы, которое появляется, когда пользователя послали на гору, если он неправильно ответил на какой-то вопрос
			imgFilin = 10 ;  // картинка филина справка
			Mounttag = 11; // тег горы
			helpTag = 1; // тег справки
			Time2M = 84000 ; // две минуты
			time3S = 	3000 ; // 3 секунды
			time3m = 180000; // 3 minutes
			NcharOnline=20; // количество символов в строке
			charheigh = 7; // высота символа
			charwidth=6;
			lineOnScreen=9; // количество строк на экране
			
			
			
Type
			tfont=record
				x,y:integer;
				im:image;
			end;
			
						
			JStateInfo  = record
			
				stateTag :  integer;  //идентификатор тэга, при передаче которого приложению может быть вызвано соответствующее состояние.
			  id  :	  		integer; //порядковый номер
			  Name : 			String;  //имя персонажа
			  typeS :     string;  // тип состояния стандартно question
			  IsDone  :   boolean; // выполнеятся ли уже
			  BackImg :	  integer; //Фоновый рисунок			  
				placeName : string;  // место, где живет кролик, строка.
				FatherTag : string;	// сообщение
				AlrearyWaitOnMountain:boolean; // уже отсидели на горе две минуты и принимаем следующий тег
				timer : 		integer;		// таймер хелпа
				
				questionHint:string;  // потсказка к вопросу
				
				moreHint :  string ; // сообщение, которе, будет выводиться, когда пользователь придет в состояние MessageHelp				
				isQuestion: boolean; // является ли это состояние вопросом
				question :  string;	//вопрос
				answers :   string;  // номера тегов ответов на вопрос
				cAnswer:    integer; //номер тега правильного ответа		
				npage:			integer;//количество страниц
			  Curpage:		integer;//номер текущей страници
			  hint :      string; // текущая надпись в поле
			end;
			
Var
		img:				array[1..2] of image;//база картинок
		State : 		array [1..11] of JStateInfo; // масив состояний
		TecState :  integer; //Текущее нахождение
		i:integer;// для манипуляций
		last_tag:		integer; // последний тег
		font:				tfont;// картинка с символами
		closeprogram,wasongora:boolean;//выход из програмы
		key:				integer;// нажатая клавиша
		
//	--		--		--		--		--		--		--		--		--		--		--			
//	--		--		--		--		--		--		--		--		--		--		--			
//	--		--		--		--		--		--		--		--		--		--		--	
procedure initF(fn:string;x,y:integer);
Begin
	font.im:=loadimage(fn);
	 font.x:=x;
	font.y:=y;
end;
//	--		--		--		--		--		--		--		--		--		--		--	

Procedure beep; // гудок
begin
if not openPlayer('/fire1.mid', 'audio/midi') then halt;    
    if not setPlayerCount(1) then halt; 
    if not startPlayer then halt;
end;

Procedure beepfile(s:string); // гудок
begin
if not openPlayer('/'+s, 'audio/midi') then halt;    
    if not setPlayerCount(1) then halt; 
    if not startPlayer then halt;
end;

procedure savestate; // сохранение позиции
  var rs: recordStore; 
      index: integer;
      name: string;
Begin
rs := openRecordStore('names'); 
index := GetRecordStoreNextId(rs);  
if index = 1 then 
    index := AddRecordStoreEntry(rs,integertostring(TecState))
		else ModifyRecordStoreEntry(rs,integertostring(TecState) , 1); 

 { name := readRecordStoreEntry(rs, 1); 
    
If name = '0' then index := AddRecordStoreEntry(rs, integertostring(TecState))
else	ModifyRecordStoreEntry(rs, integertostring(TecState),1); }
    closeRecordStore(rs);
    
end;

Function loadstateDisc:integer; // загрузка позиции
  var rs: recordStore; 
      index: integer;
      name: string;
Begin
    rs := openRecordStore('names'); 
    name := readRecordStoreEntry(rs, 1); 
    closeRecordStore(rs);
If name = '' then loadstateDisc:=1
	else loadstateDisc:=stringtointeger(name);
	
If stringtointeger(name)>=10 then loadstateDisc:=1


end;

//	--		--		--		--		--		--		--		--		--		--		--	

procedure textxy(str:string;x,y:integer);
Var 
	i,xx,yy,x1,y1,x2,y2,a:integer;
begin
For i:= 0 to Length(str) - 1 do
	begin
	a:= Ord(GetChar(str, i));
	if a > 255 then a:= a - 848;
	
	for yy:= 0 to 13 do for xx:= 0 to 15 do
			if (yy * 16 + xx + 32)=a then 
				Begin
					x1:=xx*font.x;
					y1:=yy*font.y;
					x2:=font.x;
					y2:=font.y;	
				end;
		cnv2.draw_image((x + i *font.x ), y,font.im,x1,y1,x2,y2);
	end;
	cnv2.set_clip(0,0,128,128);
end;

//	--		--		--		--		--		--		--		--		--		--		--	

//	--		--		--		--		--		--		--		--		--		--		--		
//разбиваем текст по строкам и рисуем его
Procedure PaintText(text:string);
Var
		s,buf:string;
		strings:array[1..100] of string;
		len,nstrings,pr,index:integer;
		done,enter,up,down:boolean;
		r:real;
Begin
len:=length(text);
pr:=0;
nstrings:=0;
Repeat
len:=len+index;
index:=0;
enter:=false;
If (length(text)>NcharOnline) then
For i:=0 to NcharOnline-1 do
	Begin
	If not enter then If getchar(text,i)=' ' then index:=i;
	
if (getchar(text,i)='|') then 
		begin
			index:=i;
			enter:=true; 
		end;
	
	end;
	
if index=0 then index:=NcharOnline;
If (length(text)<=NcharOnline) then 
	begin
		index:=length(text);
		done:=true;
	end;
	
buf:=copy(text,0,index);
nstrings:=nstrings+1;
strings[nstrings]:=copy(text,0,index);
if not done then 
		text:=copy(text,index+1,length(text));
until done;

r:=(nstrings*10)/(lineOnScreen+1);
r:=r/10;
//	Количество страниц
For i:=0 to 10 do
	if r>i then state[TecState].npage:=i+1;

if state[TecState].Curpage=0 then state[TecState].Curpage:=1;
//state[TecState].Curpage:=2;//временно

//Вычисляем стрелки
//находимся на первой странице всего страниц больше чем 2
If (state[TecState].npage>1) and (state[TecState].Curpage=1)  then 
	Begin
		up:=false;
		down:=true;
	end;

//середина
If (state[TecState].npage>state[TecState].Curpage) and (state[TecState].Curpage>1)  then 
	Begin
		up:=true;
		down:=true;
	end;

//Конец
If (state[TecState].npage>1) and (state[TecState].Curpage=state[TecState].npage)  then 
	Begin
		up:=true;
		down:=false;
	end;


//если одна страница
If state[TecState].npage=1 then 
	Begin
		up:=false;
		down:=false;
	end;

if tecstate = 1 then DrawImage(loadimage('/10.jpg'),0,0);

If up then	DrawImage(img[1],121,39);
If down then	DrawImage(img[2],121,112);

pr:=0;
len:=lineOnScreen+1;
//Если количество страниц - одна, то выводим по центру
If (lineOnScreen >nstrings)  then 
	Begin
		r:=(((lineOnScreen*9)+35) - ((nstrings*9)+35))/2;
		For i:=(lineOnScreen*state[TecState].Curpage)-lineOnScreen to (lineOnScreen*state[TecState].Curpage) 
						do 
			Begin
				 textxy(strings[i+1], 3, 35+(trunc(r))+(9*(pr)));
				 pr:=pr+1;
				end;
	end

{ELSE
	if  (state[TecState].Curpage=state[TecState].npage) then
		Begin
		r:=(((lineOnScreen*9)+35) - ((((lineOnScreen*state[TecState].npage-nstrings+2))*9)+35))/2;
		For i:=(lineOnScreen*state[TecState].Curpage)-lineOnScreen to (lineOnScreen*state[TecState].Curpage) 
						do 
			Begin
				 textxy(strings[i+1], 3, 35+(trunc(r))+(9*(pr)));
				 pr:=pr+1;
				end;
		
		end}
		else
	
For i:=(lineOnScreen*state[TecState].Curpage)-lineOnScreen to ((lineOnScreen)*state[TecState].Curpage) 
						do 
			Begin
			
				if state[TecState].Curpage<>1 then textxy(strings[i+2], 3, 35+(9*(pr)));
					else textxy(strings[i+1], 3, 35+(9*(pr)));
				 pr:=pr+1;
				end;
			

repaint;
End;

//	--		--		--		--		--		--		--		--		--		--		--	

Procedure checkKey;
Begin

if keyToAction(key) =GA_DOWN then
			If ((state[TecState].Curpage<>state[TecState].npage)and(state[TecState].npage>1))or (state[TecState].Curpage=0) then
				Begin
				//clrscr;
				state[TecState].Curpage:=state[TecState].Curpage+1;
				PaintText(state[TecState].hint);
				delay(100);
				// beep;
			end;
			//	else beep;

if keyToAction(key) =GA_up then
			If state[TecState].Curpage>1 then
				Begin
				//clrscr;
				state[TecState].Curpage:=state[TecState].Curpage-1;
				PaintText(state[TecState].hint);
				delay(100);
			end;
				//else playAlertSound;


end;
		
//	--		--		--		--		--		--		--		--		--		--		--			

Function AnyOtherTag:boolean; // если номер тега <> текущему и ответам
Var s,s2:string;
		i3,i2:integer;
		b:boolean;
Begin
AnyOtherTag:=true;
if last_tag=state[TecState].stateTag then AnyOtherTag:=false;
	If state[TecState].isQuestion then 
				begin
				s2:=state[TecState].answers;
				For i3:=0 to length(s2) do
	Begin
	if getchar(s2,i3)<>',' then s:=s+getchar(s2,i3)
		else 
		begin
		 if last_tag=stringToInteger(s) then  AnyOtherTag:=false;
		s:='';
		end;
	end;
if last_tag=helpTag then AnyOtherTag:=true;
if TecState=10 then
if not wasongora then begin
//wasongora:=true;
AnyOtherTag:=false;
end;


end;
end;

//	--		--		--		--		--		--		--		--		--		--		--	

Function FalseAnswer:boolean; // // если неправильный ответ на вопрос true когда неправильно
Begin
if last_tag<>state[TecState].cAnswer then FalseAnswer:=true;

if TecState=10 then
	if wasongora then if not AnyOtherTag then  FalseAnswer:=false;


end;

Function stateAlreadyVisited:boolean;  // если место (тег) уже было пройдено или его вопросы включно с текущим
Var s,s2:string;
		i3,i2:integer;
Begin
For I:= 1 to TecState do
	begin
		if (last_tag=state[i].stateTag) and (i<>TecState) then stateAlreadyVisited:=true;
			If state[i].isQuestion then 
				begin
				s2:=state[i].answers;
				For i3:=0 to length(s2) do
	Begin
	if getchar(s2,i3)<>',' then s:=s+getchar(s2,i3)
		else 
		begin
		 if last_tag=stringToInteger(s) then  stateAlreadyVisited:=true;
		s:='';
		end;
	end;
				
				end;
	end;
	
if last_tag=state[1].stateTag then stateAlreadyVisited:=false;

end;

//	--		--		--		--		--		--		--		--		--		--		--	


Function stateNotYetVisited:boolean;  // если место (тег) еще не пройдено  или его вопросы на один больше чем теперь
Var s,s2:string;
		i3,i2:integer;
Begin
If TecState<10 then
For i:= TecState+1 to 9 do
	begin
		if (last_tag=state[i].stateTag) and (i<>TecState) then stateNotYetVisited:=true;
			If state[i].isQuestion then 
				begin
				s2:=state[i].answers;
				For i3:=0 to length(s2) do
	Begin
	if getchar(s2,i3)<>',' then s:=s+getchar(s2,i3)
		else 
		begin
		 if last_tag=stringToInteger(s) then  stateNotYetVisited:=true;
		s:='';
		end;
	end;
				
				end;
	end;
end;

//	--		--		--		--		--		--		--		--		--		--		--	

Function notNextTag:boolean;   //если номер нажатого тега не номер следующего тега следующий те
Begin
If TecState<>10 then
	If last_tag<>state[TecState+1].stateTag then notNextTag:=true;
end;

Function stateIsnotCharacter:boolean;   //если номер нажатого тега является одним из вариантов ответа следующего вопроса (есди оно есть вопрос)
Var s,s2:string;
		i3,i2:integer;
Begin
If TecState<10 then
	If state[TecState+1].isQuestion then 
				begin
				s2:=state[TecState+1].answers;
				For i3:=0 to length(s2) do
	Begin
	if getchar(s2,i3)<>',' then s:=s+getchar(s2,i3)
		else 
		begin
		 if last_tag=stringToInteger(s) then  stateIsnotCharacter:=true;
		s:='';
		end;
	end;
	end;
end;

//	--		--		--		--		--		--		--		--		--		--		--	

//	--		--		--		--		--		--		--		--		--		--		--	

Procedure FlashRed(int:integer); // горим красным цветом
Begin
beepfile('red.mid');
setColor(255, 0, 0);
fillRoundRect(120, 0, 8, 8, 4, 4); 
    repaint; 
delay(int);
setColor(155, 0, 0);
fillRoundRect(120, 0, 8, 8, 4, 4); 
    repaint; 
end;

//	--		--		--		--		--		--		--		--		--		--		--	

Procedure Flashgreen(int:integer); // горим зеденым цветом
Begin
beepfile('green.mid');
setColor(0, 255, 0);
fillRoundRect(120, 0, 8, 8, 4, 4); 
    repaint; 
delay(int);
setColor(0, 100, 0);
fillRoundRect(120, 0, 8, 8, 4, 4); 
    repaint; 
end;

//	--		--		--		--		--		--		--		--		--		--		--	

Procedure DoPrint(im:integer;ms:string); // вывод фонового рисунка и текста
Begin
setColor(255, 255, 255);
fillRect(0, 0, 128, 128);


drawimage(LoadImage('/'+integertostring(im)+'.jpg'),0,0);

state[TecState].hint:=ms;
state[TecState].Curpage:=0;
state[TecState].npage:=0;
PaintText(ms);

setColor(255, 255, 255);
fillRoundRect(100, 0, 8, 8, 4, 4); 

setColor(155, 0, 0);
drawText(integertostring(TecState),1,1);repaint;
end;

//	--		--		--		--		--		--		--		--		--		--		--	


Procedure DoExit; // Конечные фанфары, все щасливы и довольны !!!
Var i1,i2:image;
Begin
//TecState:=10;
//DoPrint(state[TecState].BackImg,state[10].question);
TecState:=1;
savestate;
beepfile('ven.mid');
i1:=LoadImage('/princess3.jpg');
i2:=LoadImage('/princess4.jpg');
For i:=1 to 24 do begin
delay(500);
drawimage(i1,0,0);repaint;
delay(500);
drawimage(i2,0,0);repaint;
end;
halt;
end;


//		сидим на горе полоса прогресбара
Procedure dodalay(time:integer);
Var r:real;
		del:integer;
		ini:integer;
Begin
if not openPlayer('/gora.mid', 'audio/midi') then halt;    
    if not setPlayerCount(1) then halt; 
    if not startPlayer then halt;


r:=time/129;
del:=trunc(r);

//153 173 194	

for i:= 0 to 128 do 
	begin	
	ini:=0;
	for ini:=1 to 15 do
		begin
		setColor(153+ini*3, 173+ini*3, 190+ini*3);
		plot(i, 108+ini); 
		end;
		
	    repaint;
    delay(del);
	end;

stopPlayer;
end;
///////////////////////////////////////////////////////////////////////////////////////////////

		
Procedure DoState;
var 
		b:boolean;  // временная
Begin


If not state[TecState].isQuestion then // если состояние не вопрос
	Begin	
	if state[TecState].timer= 0 then state[TecState].timer:=getRelativeTimeMs; // запускаем таймер
		If notNextTag then  //если номер нажатого тега не номер следующего тега следующий те
			begin 
				If stateAlreadyVisited then // если место (тег) уже было пройдено
					begin
					 DoPrint(imgFilin,szUsedState);
						FlashRed(time3S);										//фоновый рисунок ?? Messagecanthelp					 
						end
					else
						If stateNotYetVisited then // если место (тег) еще небыл пройден
							begin
								DoPrint(imgFilin,SZstateNotYetVisited) 					 ;
								FlashRed(time3S);
							end
						else					
						 If stateIsnotCharacter then
							doPrint(imgFilin,szSearchFor+' '+state[TecState+1].name)
								Else 
									If last_tag=Mounttag	then  // красным горим если на горы снова
										FlashRed(time3S)
								Else
									If last_tag=helpTag	then
										Begin
										 if (getRelativeTimeMs-state[TecState].timer)> time3m		Then
											DoPrint(imgFilin,state[TecState].moreHint)
												Else
													DoPrint(imgFilin,szMessageNotHelpYet)
										end;
						
		  If last_tag=state[TecState].stateTag then
			doPrint(state[TecState].BackImg, state[TecState].FatherTag);		
				end   //
					Else //если номер нажатого тега  номер следующего состояния
						Begin
							If TecState = 10 then  // если подошли до конца
								DoExit
									Else
										Begin
										TecState:=TecState+1;
										savestate;
										Flashgreen(time3S);			
										beepfile('level.mid');
										DoState;										
										end;
						end
	end  
	else // если состояние  вопрос
	If state[TecState].types='question' then // если тип вопрос, а не горы
	Begin
		DoPrint(state[TecState].BackImg,state[TecState].question);		
			 if last_tag<>state[TecState].stateTag then	If AnyOtherTag then // если номер тега <> текущему и ответам
					begin
					If wasongora then doexit;
					
					If last_tag = helpTag then 
						DoPrint(imgFilin,state[TecState].questionHint)
						else begin
					DoPrint(state[TecState].BackImg,szNotAnswer);					 
					 FlashRed(time3S);
					 DoPrint(state[TecState].BackImg,state[TecState].question);					 
							end;
					end
						else							// если ответ не верен
							If FalseAnswer Then  // если неправильный ответ на вопрос идем в горы
								Begin
									DoPrint(imgFilin,szMountainGo);
									state[TecState].types:='mount';
									state[TecState].AlrearyWaitOnMountain:=false; // устанавливаем в лож пребывание на горе 2 минуты
									Flashred(3000);
									//last_tag:=Mounttag;
									//dostate;		
								end
									Else // если ответ на вопрос  был правилный
										Begin
										DoPrint(state[TecState].BackImg,trueAnswer);
										Flashgreen(time3S);
										DoPrint(state[TecState].BackImg,state[TecState].FatherTag);
										state[TecState].isQuestion:=false; // теперь это пройденый этап потому считаем что не вопрос
										state[TecState].IsDone:=true; // вопрос пройден										
										end;
							
					
			
	end
		Else
			If state[TecState].types='mount' then
				Begin					
					If state[TecState].AlrearyWaitOnMountain then // если мы уже отбыли свое наказание на горе, однако
						If last_tag <>state[TecState].stateTag then
							Begin
							 //DoPrint(imgFilin,'Это не '+state[TecState].name);
							 DoPrint(imgFilin,state[TecState].Name+szReturnFromMount);							

							Flashred(time3S);							
							end
							Else
								Begin
								state[TecState].types:='question';								
								dostate;
								end;
					If last_tag = Mounttag then
						If not state[TecState].AlrearyWaitOnMountain then //если мы еще не подождали на горе 2 минуты то
							begin
							DoPrint(imgMountain,szMountainText);								
							dodalay(Time2M);
							state[TecState].AlrearyWaitOnMountain:=true;
							DoPrint(imgFilin,state[TecState].Name+szReturnFromMount);		
							if TecState=10 then wasongora:=true;
							end;
				end;
	
end;

//	--		--		--		--		--		--		--		--		--		--		--	


//	--		--		--		--		--		--		--		--		--		--		--	
Procedure Loadstate;
Begin

state[1].isQuestion := true;
state[1].name := 'pцllц';
state[1].moreHint := 'Hдnellд on pitkд kaula.';
state[1].FatherTag := 'Ystдvдni pitдд juoda jo aamulla jos hдn arvelee ettд illalla on jano. Kuka hдn on?';
state[1].cAnswer := 555;
state[1].answers := '555,';
state[1].question := 'Nдin juuri ilmojen korkeuksista, ettд Prinsessa Lilja joutui inhan lohikддrmeen vangiksi!  Hдnet pitдд vapauttaa linnasta, ennen kuin tulee yц. Linnalle on pitkд matka ja tarvitsette apua matkallanne sinne.  Tapaatte pelissд erilaisia hahmoja, jotka auttavat teitд eteenpдin.  Jos et millддn lцydд seuraavaa vihjettд, voit tulla tдnne kysymддn neuvoa minulta. Olen uninen enkд yleensд vastaa ihan heti, joten voit joutua odottamaan vastausta.  Pelin aikana voit myцs joutua vastaamaan johonkin kysymykseen valitsemalla oikean vastauksen. Oletteko lukeneet ohjeet  huolella?  Hyvд, koskekaa  sitten  vihreдд palloa,  niin peli  voi alkaa.                                                                                            ';


state[2].isQuestion := false;
state[2].name := 'kirahvi';
state[2].moreHint := 'Miettikдд, mitд lauletaan, kun karhunpoika on sairaana. Missд nдhdддn unta?';
state[2].FatherTag := 'Voitteko auttaa minua, ystдvдni karhunpoika on sairaana. Mistд lцytyy paras lддke?';

state[3].isQuestion := false;
state[3].name := 'Nukkumatti';
state[3].moreHint := 'Minkд vдrisellд autolla Nukkumatti kulkee laulussa Sininen uni.';
state[3].FatherTag := 'Millд kuljen nukkumaan menevien lasten luo?';

state[4].isQuestion := false;
state[4].name := 'auto';
state[4].moreHint := 'Kuka sanoo pдд?';
state[4].FatherTag := 'Kenellд on aina pдд kipeдnд?';

state[5].isQuestion := true;
state[5].name := 'lammas';
state[5].moreHint := 'Ollut ei loiste huono Petterimme nenдnpддn...';
state[5].FatherTag := 'Etsi paikka, joksi punakuonoa nimiteltiin?';
state[5].cAnswer := 100;
state[5].question := 'Laumassani on 10 lammasta ja kolme emoa saa pian kartisoja. Jos jokainen emo saa kolme karitsaa, montako lammasta meitд sitten on yhteensд?';
state[5].answers := '100,101,102,';
state[5].questionHint := 'Laske mitд on 3 kertaa 3 ja lisдд tulos alkuperдiseen lampaiden mддrддn (10).';

state[6].isQuestion := false;
state[6].name := 'majakka';
state[6].moreHint := 'Hдn on metsдn kuningas.';
state[6].FatherTag := 'Ystдvдni on harmaa, valkoinen tai ruskea, pelottava tai kiltein ystдvд ja kaikkein vahvin!';

state[7].isQuestion := false;
state[7].name := 'karhu';
state[7].moreHint := 'Missing!';
state[7].FatherTag := 'Hint still missing!';

state[8].isQuestion := true;
state[8].name := 'intiaani';
state[8].moreHint := 'On laiva valmiina lдhtццn!';
state[8].FatherTag := 'Mihin nдmд liittyvдt: ankkuri, luotsi, ulappa ja paapuuri';
state[8].cAnswer := 110;
state[8].question := 'Selvitд kirjan avulla, mikд oli irokeesien asunnon nimi.';
state[8].answers := '110,111,112,';
state[8].questionHint := 'Etsi tieto intiaanikirjasta.';

state[9].isQuestion := false;
state[9].name := 'purjelaiva';
state[9].questionHint := 'Справочки пока нема...';
state[9].FatherTag := 'Nyt olet valmis kohtaamaan lohikддrmeen ja voit edetд kohti linnaa. Linna sijaitsee tyцhuoneessa.';

state[10].isQuestion := true;
state[10].name := 'Linna';
state[10].answers := '120,121,122,';
state[10].question := 'Kokeile, mikд avain sopii linnan oveen ja vapauttaa prinsessan. Jos valitsette vддrдn avaimen, joudutte jддhylle.';
state[10].FatherTag := 'Ok lets done !';

for i:=1 to 10 do
	Begin
	state[i].id := i;
	state[i].BackImg := 9+i;
	state[i].stateTag:=i;
	state[i].types:='question'
 end;
//state[1].stateTag:=1000;

end;
//									*****************************			*************************

Procedure checktagreder; // проверка  таг ридера
Var k:integer;
		ss:string;
		b:boolean;
Begin
if   key = KE_STAR then // эмулятор
	begin
	ss:='';
	k:=KE_NONE;
	delay(50);
	beep;
	
	Repeat

//delay(50);
k:=getKeyPressed;
if b then
if k <>KE_NONE then
	begin
		if k=KE_KEY0 then ss:=ss+'0';
		if k=KE_KEY1 then ss:=ss+'1';
		if k=KE_KEY2 then ss:=ss+'2';
		if k=KE_KEY3 then ss:=ss+'3';
		if k=KE_KEY4 then ss:=ss+'4';
		if k=KE_KEY5 then ss:=ss+'5';
		if k=KE_KEY6 then ss:=ss+'6';
		if k=KE_KEY7 then ss:=ss+'7';
		if k=KE_KEY8 then ss:=ss+'8';
		if k=KE_KEY9 then ss:=ss+'9';
	end;
b:=false;
if k=KE_NONE then b:=true;

until k = KE_POUND;
setColor(155, 100, 0);
drawText('('+ss+')',100,1);repaint;

if ss<>'' then begin
 last_tag:=stringtointeger(ss);
DoState;
 end;
key:=KE_NONE;


	end;

end;

Procedure loading;
Begin
drawimage(LoadImage('/splash.jpg'),0,0);repaint;
delay(3000);
initF('/cyr_pipa_6x7.png',6,7);// грузим фонт
		
	img[1]:=LoadImage('/up.png');
	img[2]:=LoadImage('/down.png');
	//img[4]:=LoadImage('/10.jpg'); //sava
	//img[3]:=LoadImage('/4.jpg'); //Gori
	
	
//for i:=10 to 20 do	img[i]:=LoadImage('/'+integertostring(i)+'.jpg'); //Gori
//img[i]:=LoadImage('/10.jpg');
	
TecState:=loadstateDisc; // устанавливаем положение первое дальше будет проверятся с загрузкой
//TecState:=7; //!!!!!!!!!!!!!!!!!!!!

Loadstate;
last_tag:=state[TecState].stateTag;

end;


//									*****************************\\\\\\\\\\\\\\			//////////////////*************************
//	**	**	**	**	**	**	**	**	**	**	**	**	**	**	**	**	**	**	**	**	**	**	**	**	**	**		
begin
//cnv2.fullscreen_mode(1);
loading;
DoState;
//drawimage(img[4],0,0);repaint;
Repeat
//	**		**		**		**		**		**		**		**		**		**		**
//													Рабочий цикл программы

key:=getKeyPressed;
checkKey;
checktagreder;
//drawimage(img[4],0,0);repaint;

//	**		**		**		**		**		**		**		**		**		**		**
delay(50);
until closeprogram;

// Сохранение удачного завершения програмы

end.
(Offline)
 
Ответить с цитированием
Старый 13.01.2008, 14:21   #2
cHeRsAnYa
ПроЭктировщик
 
Регистрация: 18.12.2007
Сообщений: 157
Написано 24 полезных сообщений
(для 27 пользователей)
Смех Ответ: Игрушка для детей на mp

Не робит ни на мидпх ни на се к300. Просто белый экран.

Последний раз редактировалось cHeRsAnYa, 13.01.2008 в 14:31.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тест на IQ для детей Randomize Загадки 17 20.08.2010 23:59
Игрушка для курсовой работы m_512 Проекты на Blitz3D 10 06.11.2009 03:35
Игрушка Alex812 Основной форум 0 18.01.2006 01:40
Очищаем память от детей правильно impersonalis FAQ 0 04.09.2005 22:13


Часовой пояс GMT +4, время: 20:15.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com