Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 29.05.2012, 14:57   #1
volha_alina
Пользователь
 
Регистрация: 22.05.2012
Сообщений: 13
Репутация: 10
Печаль Игра со спичками, вывод их на экран

Берется 1-2 СМЕЖНЫЕ спички.всего их не больше 100.
Игра работает, только нужно добавить вывод оставшихся спичек визуально как '|' в строчку с указанием номера который забирается,если 2 спички, то они должны идти подряд.

Код:
uses crt;
label v1,v2,v3, q;
var a,b,c,k,p,n,m,w,d:integer;
begin
clrscr;
repeat
write('vvedite chislo spichek ne bolshe 100: ');
read(n);
if n>100 then writeln('oshibka! povtorite vvod');
until n<100;
writeln('mojno brat maximum 2 spichki  ');
writeln('kto hodit pervim: 0-vi/1-komp');
readln(d);
if d=0 then goto v2
       else goto v3;
writeln;
while p=0 do begin
		while c=0 do begin
				   v2: write('tyanite spichki   ');
           read(a);
				   if a < 1 then c:=0
					    else c:=1;
				   if a > 2 then begin writeln('oshibka! povtorite vvod');
                         goto v2;
                         end;
			     end;
		c:=0;
		n:=n-a;
		if n<=0 then p:=1;
		if p=0 then begin
				writeln('spichek ostalos: ',n);
				v3: b:=n mod 3;
				if b<1 then b:=b+1
						   else goto q;
q:writeln('komp vzal ',b);
n:=n-b;
if n=0 then p:=2;
writeln('spichek ostalos   ',n);
end;
end;

case p of
 1: writeln ('vi pobedili!');
 2: writeln ('komp pobedil!');
 end;
 readkey;
end.
volha_alina вне форума   Ответить с цитированием
Старый 29.05.2012, 17:14   #2
volha_alina
Пользователь
 
Регистрация: 22.05.2012
Сообщений: 13
Репутация: 10
По умолчанию

зависает когда комп берет 2 спички... почему?

Код:
uses crt;
label v1,v2,v3,v,q;
var a,b,c,e,k,k1,p,n,m,w,d:integer; i:byte;
    nom : array[1..100] of integer;
    sp : array[1..100] of char;
begin
clrscr;
repeat
write('vvedite chislo spichek ne bolshe 100: ');
read(n);e:=n;
if n>100 then writeln('oshibka! povtorite vvod');
until n<100;
for i:=1 to n do begin
                 nom[i]:=i; write(nom[i]:3);
                 end;
writeln;
for i:=1 to n do begin
                 sp[i]:='|'; write(sp[i]:3);
                 end;
writeln;
writeln('mojno brat maximum 2 spichki  ');
writeln('kto hodit pervim: 0 - vi / 1 - komp');
readln(d);
if d=0 then goto v2
       else goto v3;
writeln;
while p=0 do begin
		while c=0 do begin
				         v2: write('skolko tyanite spichek:   ');
                 read(a);
				         if a < 1 then c:=0
					                else c:=1;
				         if a > 2 then begin writeln('oshibka! povtorite vvod');
                               goto v2;
                               end;
                 write('s kakogo nomera:   ');
                 readln(i);
                 sp[i]:=' '; if a=2 then sp[i+1]:=' ';
			           end;
		c:=0;
		n:=n-a;
		if n<=0 then p:=1;
		if p=0 then begin
				writeln('spichek ostalos: ',n);
        for i:=1 to e do begin
                 nom[i]:=i; write(nom[i]:3);
                 end;
                 writeln;
        for i:=1 to e do write(sp[i]:3);
        writeln;
				v3: b:=n mod 3;
				if b<1 then b:=b+1
						   else goto q;
q:writeln('komp vzal ',b);
for i:=1 to e do begin
                 k1:=0;
                 if sp[i]=' ' then i:=1+1 else begin
                                              sp[i]:=' ';
                                              if b=2 then sp[i+1]:=' ';
                                              k1:=k1+1;
                                              if k1=1 then goto v;
                                              end;
                 end;
v:for i:=1 to e do begin
                 nom[i]:=i; write(nom[i]:3);
                 end;
writeln;
for i:=1 to e do write(sp[i]:3);
writeln;
n:=n-b;
if n=0 then p:=2;
{writeln('spichek ostalos   ',n); }
end;
end;

case p of
 1: writeln ('vi pobedili!');
 2: writeln ('komp pobedil!');
 end;
 readkey;
end.
volha_alina вне форума   Ответить с цитированием
Старый 29.05.2012, 20:03   #3
TinMan
Участник клуба
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
Репутация: 728
По умолчанию

Цитата:
Сообщение от volha_alina Посмотреть сообщение
зависает когда комп берет 2 спички... почему?
Потому что нельзя изменять переменную цикла FOR внутри цикла.
Замени строчку:
Код:
                 if sp[i]=' ' then i:=1+1 else begin
на вот такую:
Код:
                 if sp[i]=' ' then {i:=1+1} else begin
P.S.
совет: сотри TP нафик и скачай FP c http://freepascal.org/ . Он не пропустит ошибки типа такой.
__________________
Предпочитаю на "ты".
TinMan вне форума   Ответить с цитированием
Старый 30.05.2012, 15:01   #4
volha_alina
Пользователь
 
Регистрация: 22.05.2012
Сообщений: 13
Репутация: 10
По умолчанию

Спасибо большое!)

а можно ли их сделать с условием, что брать нужно смежные спички, если их 2?

Последний раз редактировалось volha_alina; 30.05.2012 в 21:23.
volha_alina вне форума   Ответить с цитированием
Старый 31.05.2012, 11:51   #5
TinMan
Участник клуба
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
Репутация: 728
По умолчанию

Пожалуйста.
Цитата:
Сообщение от volha_alina Посмотреть сообщение
а можно ли их сделать с условием, что брать нужно смежные спички, если их 2?
а ты правда думаешь, что понятно объяснила проблему?
В программировании можно практически все. Но нужно понимать, что именно нужно. Из твоих нескольких слов это сделать крайне трудно. Пальцы жалеешь или клаву?
__________________
Предпочитаю на "ты".
TinMan вне форума   Ответить с цитированием
Старый 02.06.2012, 09:49   #6
volha_alina
Пользователь
 
Регистрация: 22.05.2012
Сообщений: 13
Репутация: 10
По умолчанию

ошибка найдена! спасибо за помощь!
volha_alina вне форума   Ответить с цитированием
Ответ

Опции темы

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод на экран Nikolai_90 Assembler 11 02.05.2012 09:25
Написать игру со спичками. Царица C++ C++ Builder 0 12.12.2011 11:03
Алгоритм игры со спичками Card1nal Общие вопросы C/C++ 3 14.02.2010 20:20
Вывод на экран Timpi Assembler 2 30.11.2009 19:05
Вывод на экран Rifler Паскаль 10 18.07.2008 18:30


23:32.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru