folder Tahribat.com Forumları
linefolder C - C++
linefolder Konsolda Yılan Oyunu



Konsolda Yılan Oyunu

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    fly_on_the_shit
    fly_on_the_shit's avatar
    Kayıt Tarihi: 11/Haziran/2007
    Erkek

    Selam gençlik, bir iş için algoritmayı hazırlamışken konsolda basit bi yılan yazıyım dedim boş bi zamanda bir de tetris yazıcam, kaynak kodunu da veriyim belki işinize yarar.

    Exe ve source burda http://www.sendspace.com/file/lthkqh

    İlk başta biraz yavaş başlıyo 5 tane yem yutun hız 2 katına çıkıyo sonra 6 ya kadar artıyo, kodun içindeki MAX_SIZE ı arttırıp derlerseniz oyunu uzatabilirsiniz, şimdilik max 36 yılan boyutu.

    http://oi45.tinypic.com/wwjl7a.jpg

     


    Copyright (c) 2012
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    fly_on_the_shit
    fly_on_the_shit's avatar
    Kayıt Tarihi: 11/Haziran/2007
    Erkek

    Buyur abü

    http://www.sendspace.com/file/yjcc8a

     

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <windows.h>
    
    #define MAX_SIZE    36 
    
    typedef struct  tagCoord {
    	int x; 
    	int y;
    } Coord;
    
    typedef struct tagSnake {
        int     size;
        Coord	xy[MAX_SIZE];
    } Snake;
    
    
    int point, speed = 1;
    Coord bait;
    
    
    void gotoxy( int x, int y )
    {
        COORD p = { x, y };
        SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), p);
    }
    
    void PrintFrame(void)
    {
        int i;
        unsigned char x[81] = {0};
        
        x[0] = 201;
        x[79] = 187;
        
        memset(x+1, 205, 78);
    
    	gotoxy(0,0);
        printf("\n%s\n", x);
        
        for (i=2; i<24; i++)
        {
            gotoxy(0,i);
            printf("%c", 186);
            gotoxy(79,i);
            printf("%c", 186);
        }
        
        gotoxy(0,24);
        
        x[0] = 200;
        x[79] = 188;
        
        printf("%s", x);
        
        speed = 1;
        point = 0;
        
        gotoxy(0,0);
    	printf(" Boyut 1   ");
        gotoxy(35,0);
    	printf(" Hiz 1   ");
        gotoxy(65,0);
    	printf(" Puan 0   ");
    			
        fflush(stdout);
    }
    
    void ClearDesk(Snake *s)
    {
    	int i;
    	
    	gotoxy(bait.x, bait.y);
    	printf(" ");
    	
    	for (i=0; i<(s->size); i++)
    	{
    		gotoxy(s->xy[i].x, s->xy[i].y);
    		printf(" ");		
    	}
    	
    	while (_kbhit())
    	{
    		getch();
    	}	
    }
    
    void PutBait(void)
    {
    	srand (time(NULL));
    	bait.x = rand() % 78 + 1;
    	bait.y = rand() % 22 + 2;
    	
    	gotoxy(bait.x, bait.y);
    	printf("%c", 42);
    }
    
    void MoveSnake(Snake *s, int way)
    {	
    	int i;
    	
    	gotoxy(s->xy[s->size -1].x, s->xy[s->size -1].y);
    	printf(" ");
    	
    	for (i=s->size-1; i>0; i--)
    	{
    		s->xy[i].x = s->xy[i-1].x;
    		s->xy[i].y = s->xy[i-1].y;
    	}
    		
        switch (way)
        {
    	case 1:
    		s->xy[0].y -= 1;
    		break;
    	case 2:
    		s->xy[0].x -= 1;
    		break;
    	case 3:
    		s->xy[0].x += 1;
    		break;
    	case 4:
    		s->xy[0].y += 1;
    		break;	
    	}
    	
    	if (s->xy[0].x == bait.x &&  s->xy[0].y == bait.y)
    	{
    		s->size++;
    
    		point += 10*speed;
    		
    		if (s->size % 6 == 0) {
    			speed++;
    		}
    		
        	gotoxy(0,0);
    		printf(" Boyut %d", s->size);
        	gotoxy(35,0);
    		printf(" Hiz %d", speed);
    		gotoxy(65,0);
    		printf(" Puan %d\a", point);
    		
    		PutBait();
    	}
    
    	gotoxy(s->xy[0].x, s->xy[0].y);
    	printf("%c", 254);
    }
    
    void NewSnake(Snake *s)
    {
        memset(s, 0, sizeof(Snake));
        
        s->size = 1;
        s->xy[0].x = 39;
        s->xy[0].y = 12;
        
        PutBait();
    }
    
    int IsCrash(Snake *s)
    {
    	int i;
    	
    	if ((s->xy[0].x < 1 || s->xy[0].x > 78) || 
    		(s->xy[0].y < 2 || s->xy[0].y > 23))
    	{
    		return 1;
    	}
    	
    	for (i=1; i<(s->size); i++)
    	{
    		if (s->xy[0].x == s->xy[i].x && s->xy[0].y == s->xy[i].y)
    		{
    			return 1;
    		}
    	}
    	return 0;
    }
    
    void PrintMessage(Coord *xy, char *message, int sleepTime)
    {
    	char mask[256] = {0};
    	
    	memset(mask, ' ', strlen(message));
    	
    	gotoxy(xy->x, xy->y);
    	printf("%s", message);
    	
    	Sleep(sleepTime);
    	
    	gotoxy(xy->x, xy->y);
    	printf("%s", mask);
    }
    
    void UserControl(Snake *s)
    {
    	int way = 0;
    	
    	while (1)
        {
    		Sleep(500/speed);
    
            if (_kbhit()) 
            {
                char c = getch();
                
                if (c == -32) {
    				c = getch();
    			}
    
    	        switch(c)
    	        {
    	        case 27:				//ESC
    	            return;
    	        case 72:				// Up
    	        	if (way != 4) {
    					way = 1;
    				}
    				break;
    	        case 75:				// Left
    	        	if (way != 3) {
    					way = 2;
    				}
    	            break;
    	        case 77:				// Right
    	        	if (way != 2) {
    					way = 3;
    				}
    	            break;
    	        case 80:				// Down
    	        	if (way != 1) {
    					way = 4;
    				}
    	            break;
    	        }
            }
            
            MoveSnake(s, way);
            
            if (IsCrash(s)) 
    		{
    			s->xy[0].x -= 1;
    			
    			if (s->xy[0].x > 0)
    			{
    				PrintMessage(&(s->xy[0]), "(*)\a\a\a", 3000);
    			}
    			else {
    				s->xy[0].x += 1;
    				PrintMessage(&(s->xy[0]), "(*)\a\a\a", 3000);
    			}
    			return;
    		}
    		
    		if (s->size == MAX_SIZE)
    		{
    			PrintMessage(&(s->xy[0]), "Tamam amk kazandin\a\a", 3000);
    			return;
    		}
        }
    }
    
    int main()
    {
        Snake s;
        
        while (1)
        {
    		PrintFrame();
    		NewSnake(&s);
    		UserControl(&s);
    		ClearDesk(&s);
        }
        
        return 0;
    }
    

    Copyright (c) 2012
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SARI
    SARI's avatar
    Banlanmış Üye
    Kayıt Tarihi: 29/Eylül/2009
    Erkek

    Eline sağlık ağa çok iyi olmuş :D

    Mesaj 16 Temmuz 2012 (Pazartesi) Saat: 11:02'da SARI tarafından düzenlendi.

    Ban Sebebi : Molrada Haarket Eiğtti için Bdnlaanı... Türkçe öğretmenliği okuyan arkadaşım sana ders verebilir admin arkadaş :)
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    Çok iyiymiş oldukça da az satır


    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Waze
    Waze's avatar
    Kayıt Tarihi: 01/Ekim/2012
    Erkek

    Hocam konsol üzerinde basit grafiksel uygulamalar yazabilir miyiz?

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    huzi123
    huzi123's avatar
    Kayıt Tarihi: 16/Temmuz/2015
    Erkek

    Hocam bir daha yukleme sandınız var mı exe ve source dosyalarını link kırık.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    dolarkuru
    dolarkuru's avatar
    Kayıt Tarihi: 25/Ocak/2014
    Erkek

    Hocam kod duruyorsa tekrar yukleyebilir misin source kodda bazi hatalar aliyorum ?

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    LynXMaSTeR
    LynXMaSTeR's avatar
    Kayıt Tarihi: 19/Temmuz/2003
    Erkek

    başarılı


    goo.gl/qBNZmW
Toplam Hit: 1981 Toplam Mesaj: 8