Arama butonu
Bu konudaki kullanıcılar: 1 misafir
0
Cevap
211
Tıklama
0
Öne Çıkarma
!!!!!!ARKADASLAR COK ACIL pASCAL DA SORUM VAR!!!!
R
20 yıl
Er
Konu Sahibi

soru

Konu: Sayı Bulma Oyunu (Dosyalar kullanılarak)
Kullanılabilecek Diller: C veya Pascal

Açıklamalar
1. Program kullanıcı girişi, kullanıcı kayıt, oyunun oynanması ve en yüksek puanları gösteren bölümlerden oluşacaktır.
2. Programda 3 adet dosya kullanılacaktır.
• Kullanıcı bilgilerinin tutulduğu dosya (kullanıcı adı, şifre, ad, soyad, mail bilgilerini içerecek)
• Puanların tutulduğu dosya (hangi kullanıcının kaç seferde sayıyı tahmin ettiği)
• Tahmin edilecek sayının tutulduğu dosya
3.Program başladığında “Yeni kullanıcı kaydı, giriş ve en yüksek 5 puanın listelenmesi” bölümlerinden birisi seçilebilecek.
4.Yeni kullanıcı kaydında, kullanıcının adı,soyadı, maili, kullanıcıadı ve şifresi girilerek dosyaya kaydedilebilmeli.
5.En yüksek puanların listelenmesinde puanların tutulduğu dosya taranarak en yüksek 5 puan bulunup listelenebilmeli.
6.Giriş bölümünde kişi, kullanıcıadı ve şifresini kullanarak oyun oyna bölümüne giriş yapabilmeli. Eğer girilen şekilde bir kullanıcı yoksa oyun oynamaya izin vermemeli.
7. Oyunun oynanması şu şekilde olacaktır. Kullanıcı giriş yaptıktan sonra dosyada bulunan sayıyı tahmin etmeye çalışacaktır.
Örnek: Dosyada tutulan sayının 2589 olduğunu varsayalım.
1. Tahmin : 2873
+1 -1 (Bu 2 sayının doğru tahmin edildiği birinin yerinin doğru diğerinin doğru yerde olmadığını ifade eder)
2. Tahmin : 3498
-2
3. Tahmin : 2681
+2
4. Tahmin : 2485
+2 -1
5.Tahmin : 2589
Tebrikler bildiniz.
8. Puanlamayı kullanıcının tahmin sayısına göre belirleyebilirsiniz.(Veya kendinize özgün başka bir şekilde hesaplayabilirsiniz) Kullanıcının kazandığı puan kullanıcı adıyla birlikte dosyaya (puanların tutulduğu dosyaya) kaydedilmelidir.
9. Programa yapacağınız kendinize özgü ilaveler olabilir. Ayrıca görsellik, programın kolay anlaşılır olması size ek puan getirir.
10. Rapor bölüm sayfasından ulaşabileceğiniz rapor esaslarına uygun olarak hazırlanmalıdır.



!!!!!!BEN BIRAZ URASTIM AMA HATALARIM VAR VE PASCAL BILGIM AZ OLDUGUNDAN ICINDEN CIKAMIYORUM!!!
ODSYALAMADA SIRALI ERISISMLI DOSYA SISTEMINI SECTIM...FAKAT KAYIT YAPTIGIMDA ESKI KAYDI SILIYO.....AYRICA KULLANICI ADI VARSA TEKRAR GIRISI KABUL ETMEMELI!!!!!!!!!



[PROGRAM sayi_oyunu;

VAR

kadi,sifre:array[1..7] of string[7];
sayac,puan,i,j,a,b,bs,bn,ort,k,arti,eksi,tahs:integer;

gsayi,ks,ksayi:string[4];
ka,si:string[7];
as,m,kad,s:string;
t,ss,p:text;
secim,c,tus:char;
gir:boolean;


BEGIN
writeln('');
writeln('');
writeln('');
writeln('');

writeln(' *******SAYI BULMA OYUNU******* ');
writeln('');
writeln(' YENi KULLANICI KAYDI [K]');
writeln(' GiRiS [G]');
writeln(' TOP 5 LiSTESi [T]');
writeln(' EXiT [E]');
writeln('');
writeln('');
write(' LUTFEN YUKARIDAKi MENUDEN SECiMiNiZi YAPIN:');
READLN(secim);
CASE secim OF
'k','K':BEGIN {1.KULLANICI KAYIT ISLEMLERI}
assign(t,'kayit');rewrite(t);
write('ADINIZ SOYADINZ:');readln(as);
write('E-Mail ADRESiNiZ:');readln(m);
write('KULLANICI ADI (MAKSIMUM 7 KARAKTER):');readln(kad); {!!!!!!HATA!!!!KAYDIN TEKRAR GIRILMESI KONUSU!!!}
write('SiFRE:');readln(s);

writeln(t,as);
writeln(t,m);
writeln(t,kad);
writeln(t,s);

close(t);
readln;

END ;
'g','G':BEGIN

assign(t,'kayit');reset(t);
i:=1;
while(not eof(t))do
BEGIN
readln(t,as);
readln(t,m);
readln(t,kad);
readln(t,s);
kadi:=kad;sifre:=s;
i:=i+1;
END;
write('KULLANICI ADI:');readln(ka);
write('SiFRE:');readln(si);

c:='e';
bs:=1;bn:=1;
while (c<>'h') do
BEGIN
ort:=trunc((bs+bn)/2);
if (ka=kadi[ort]) then
BEGIN
if(si=sifre[ort])then
BEGIN {2.GIRIS VE OYUNUN OYNANACAGI ALAN!!!!!!!}
assign(ss,'sayimiz');rewrite(ss); {DEFAULT SAYIYI KAYDETME!!!}
ks:='1111';
writeln(ss,ks);
close(ss);
sayac:=0;
tahs:=0;
gir:=false;
i:=1;
puan:=120;
while (gir<>true)do
BEGIN
writeln(ka,' 4 BASAMAKLi SAYIYI TAHMiN ET BAKALIM:=');
readln(gsayi);
tahs:=tahs+1;
sayac:=sayac+10;
puan:=puan-sayac;
assign(ss,'sayimiz');reset(ss); {DEFAULT SAYIYI CAGIRMA}
readln(ss,ks);
ksayi:=ks;
writeln('kayitli sayimiz',ksayi);
arti:=0;
eksi:=0;
for j:=1 to 4 do
BEGIN

for k:=1 to 4 do
begin
if (ksayi[j]=gsayi[k])then
begin

if (k=j) then
begin
arti:=arti+1;
end
else if (k<>j)then {!!!!!!!HATA!!!!!!!!EKSI FAZLA HESAPLANIYO!!!!!!}

eksi:=eksi-1;

end;
end;
END;

write('+',arti);writeln(' ',eksi);
if (sayac>=100)then
begin
writeln('UZGUNUM HAKKINIZ BiTTI :(..... PUANINIZ:=0');
gir:=true;
end;
if (gsayi=ksayi) then
begin
writeln('**********************TEBRiKLER ',kad,' SAYIYI BULDUN**********************');
writeln('PUANINIZ:=',puan);

assign(p,'puanlar');rewrite(p);
writeln(p,kad);
writeln(p,puan);
writeln(p,tahs);

close(p);
gir:=true;

end;
end;
END;{while}

readln;
c:='h'


END;
{!!!!!!!HATA!!!! kullanici adi yanlis girildiginde msj vermeli!!!!!!!!!}

END;


END;{while}

't','T':BEGIN
assign(p,'puanlar');reset(p);
while (not eof(p)) do
BEGIN

readln(p,kad);
readln(p,puan);
readln(p,tahs);


END;{wile}
writeln(kad,' ',puan,' ',tahs,'. TAHMINDE SAYIYI BULDU');
close(p);
readln;
END;




END;{case}

close(t);

READLN;
END.
code][/code]

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.