Şimdi Ara

c de kucuk bi oyun yazdim(yardım)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
593
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • arkadaşlar şu büyü olaylarını krımızı yazdırmak istiyorum bu mümkünmü sorunsuz çalışıyor ama bi bakarsanız seviniirm


    #include<stdio.h> 
    #include<conio.h>
    #include<time.h>
    #include<stdlib.h>

    void enerjileriyazdir();
    void gandalfsaldir();
    void sarumansaldir();
    int oran=0;
    int buyuno=0;
    int sarumanenerji=100;
    int sarumanoranlar[3]={45,40,15};//buyu ihtimalleri
    int sarumanbuyuler[3]={5,7,13};
    int gandalfenerji=100;
    int gandalforanlar[3]={45,20,35};
    int gandalfbuyuler[3]={3,9,10};
    void enerjileriyazdir()
    {
    printf("gandalf: %d saruman:%d",gandalfenerji,sarumanenerji);
    }
    void gandalfsaldir()
    {
    oran=rand()%100+1;
    if(oran<gandalforanlar[0])
    {
    printf("gandalf\"su\" buyusu yapti!\n\n");
    buyuno=0;
    }
    else

    if(oran>gandalforanlar[0] && oran<gandalforanlar[2])
    {
    printf("gandalf \"toprak\" buyusu yapti!\n\n");
    buyuno=1;
    }

    else{
    printf("gandalf \"iyi ruh\" buyusu yapti\n\n");
    buyuno=2;
    }
    // etkiyi sarumanin enerjisinden dus
    sarumanenerji-=gandalfbuyuler[buyuno];
    enerjileriyazdir();//yeni enerjileri ekrana yazar;
    }
    void sarumansaldir()
    {

    oran=rand()%100+1;
    if(oran<sarumanoranlar[0])
    {
    printf("saruman isik buyusu yapti!!\n\n");
    buyuno=0;
    }
    if(oran>sarumanoranlar[0] && oran<=sarumanoranlar[0]+sarumanoranlar[1])
    {
    printf("saruman \ates\" buyusu yapti!!\n\n");
    buyuno=1;
    }else
    {printf("saruman kotu ruh buyusu yapti!!\n\n");
    buyuno=2;
    }
    gandalfenerji-=sarumanbuyuler[buyuno];
    enerjileriyazdir();
    }
    int main(){
    srand(time(NULL));
    printf("mucadele basliyor\n");
    do{
    gandalfsaldir();
    printf("\n\n");
    sarumansaldir();
    printf("\n\n");
    }while(gandalfenerji>0 && sarumanenerji>0);
    //mucadele bitti kazanani ve enerjileri ekrana yaz
    printf("\n mucadele bitti!!!\n\n");
    enerjileriyazdir();
    printf("\n sonuc:");
    if(gandalfenerji<=0 && sarumanenerji<=0){
    printf("berabere");
    }
    else{
    if(gandalfenerji>0)
    {printf("gandalf kazandi\n");}else{
    printf("saruman kazandi");
    }
    }
    getch();
    }







  • C++ da böyle yapılabiliyor. Sanırım tek değiştirilmesi gereken cout komutu...

    EDİT : İLK ÖNCE #include <windows.h> KOMUTUNU EKLEMEYİ UNUTMAYIN !

    void RenkliYazi(string szText, WORD renk)
    {
    HANDLE hOutput;
    hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hOutput, renk);

    cout << szText;
    }

    Mainde örnek kullanım ;

    RenkiYazi("Kirmizi", FOREGROUND_RED );
    Kirmizi yazisini Kırmızı yazdırır.

    BACKGROUND_RED
    BACKGROUND_BLUE
    BACKGROUND_GREEN

    FOREGROUND_RED
    FOREGROUND_BLUE
    FOREGROUND_GREEN

    gibi komutları WORD yerinde kullanabilirsiniz. Renkleri karıştırmak istiyorsanız örneğin mor yazı yazıcaksınız diyelim. Arkaplanı da Yeşil yapmak istiyorsunuz.

    RenkiYazi("Deneme", FOREGROUND_RED | FOREGROUND_BLUE | BACKGROUND_GREEN );

    şeklinde kullanabilirsiniz... | ile birleştirin =)

    Eğer siz ben rengi değiştircem ve tekrar değişene kadar böyle kalsın derseniz, szText i kaldırır, fonksiyonun sonundaki cout << szText; kısmını da kaldırırsınız.



    < Bu mesaj bu kişi tarafından değiştirildi Draglino -- 19 Nisan 2010; 18:56:00 >




  • Bu işin yolu biraz karışık.

    Bu işin sizin açınızdan çözümü şöyle bir şey olabilir. conio.h içinde, textcolor() adlı bir çağrı tanımlı olmalı. Bu durumda,

    1 mavi
    2 Yeşil
    4 kırmızı

    olmak üzere renkleri elde edebilirsiniz. RGB formatında yani.. Yani vede yani sarı = kırmızı + yeşil = 4+2 = 6 gibi.

    Eğer buna 7 eklerseniz, parlak ton olacaktır, o zaman sarı olur, yoksa kahverengi. Neyse, bir döngü ile 0 ... 15 arasını denersiniz. Uzun zamandır bunları kullanmıyorum, unutmuşumdur.

    Ama bu işin asıl yolu yordamı, terminal kontrol kodlarından geçer. Genel olarak, Windows veya Linux konsolları, bir terminal emulatörü içerir. Bu emülatör, ekrana yazılması istenen şeyleri işler. Win/DOS sistemlerinde bu iş için ANSI emülatörü kullanılır, ama başka emülatörlerde mevcuttur. Sizin ANSI olduğunu farzetmeniz işinizi görür sanıyorum.

    Bu durumda "ESC[3n;m" dizisinde n yerine renk kodunu koyup printf ile basarsanız, işinizi görür. ESC, '\x1B' olmalı. 3 yerine 4 koyarsanız, zemin rengi değişir. Yani mavi için:

    printf("\x1b[31m") -> mavi yazı
    printf("\x1b[41m") -> mavi zemin.

    Elbette bu dizinin arkasına dilediğinizi ekleyip yazabilirsiniz. Siz yeni bir renk belirleyene kadar yazı o renkte çıkar. Renk olarak 1 mavimidir, kırmızı mıdır, şu anda hiç bir fikrim yok.

    http://bluesock.org/~willg/dev/ansi.html

    Buradan renkler ve başka tür (ekranı sil, ses çıkar vs.) dalavereler için hangi kodları kullanmanız gerektiğini görebilirsiniz.

    Linux/UNIX için conio zaten yok. Ama bu ANSI seçenekleri iş görmeye devam eder. Velakin UNIX'te sürüyle terminal emülasyonu vardır. Hangisinde olduğunuzu bulup, ona göre /etc/termcap'tan bakıp yazmanız gerekir vs. Yada curses, ncurses gibi bir şey kullanırsınız. Gerçi bu renk kodları genelde her terminal için geçerlidir.

    Eğer ansi kodlarını kullanrı ve o conio.h'ı oradana atarsanız, uygulamanızın hemen her yere taşınabileceğini de ekleyeyim.




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.