C++ Kendi Oyun Motorunuzu Yazın-Bölüm 3 3Boyutlu Ortamda Hareket

TRPixelServer

YASAKLANDI
Mesajlar
47
En iyi cevaplar
0
Beğeniler
47
Puanları
70
Ruh hali
Daha öncesinde Penceremizi yapmıştık arkadaşlar.Şimdi sırada hareket var ama ilk önce int main yazan yere glutDisplayFuncun tam altına şunu yazıyoruz glutKeyboardFunc (keyboard); bu klavyeden gelen girdileri kabul etcek komut.


ardından projenin en başına includenin altına şunu yerleştiriyoruz:
int Tx = 0;
int Ty = 0;
int Tz = 0;

sahnemizin basına glTranslatef(Tx,Ty,Tz); yazıyoruz bu olmadan calısmaz
dipslayın tam altına bunu koyuyoruz:
C++:
void keyboard(unsigned char key, int x, int y)
{
   switch (key) {
           case 'w':
        case 'W':
            Tz --;

  
            break;
                   case 's':
        case 'S':
            Tz ++;

  
            break;
            case 'a':
            case 'A':
            Tx --;

  
            break;
            
            case 'D':
            case 'd':
            Tx ++;


            break;
            
            case 'E':
            case 'e':
            Ty ++;

  
            break;
            
                        case 'Q':
            case 'q':
            Ty --;

  
            break;
            
        
    }
    glutPostRedisplay();
}

artık oyun motorumuz tamamı ile hareket ettirelbilir bir ortamda.
Ancak kodda bir bug bulunmakta ben saatlerce bunun icin ugrastim ancak bulamadım normalde bu yazıyı acmadan once kodu yazdım ancak kod calısıodu simdi buga girmis ekrana tıklayınca rastgele bir yere ısınlamakta dogru kodu yazan olursa okuyan arkadaslara yardımcı olurlar ondan dolayı bir sonraki derste calisan bir kod verecegim :)

C++:
 #include <iostream>     //cout icin
#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <dos.h>
#include <time.h>
#include <windows.h>  // MS Windows icin
#include <GL/glut.h>  // GLUT, include glu.h ve gl.h
 
int Tx = 0;
int Ty = 0;
int Tz = 0;


void display() {
    glTranslatef(Tx,Ty,Tz);
   glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Arkaplanı siyah ve opaga ayarla
   glClear(GL_COLOR_BUFFER_BIT);         // Arkaplan rengi buffer temizleyici (arkaplan)
glColor3f(4,0,0);
glutSolidCube(1);
 
   glFlush();  // Şimdi renderle
}

void keyboard(unsigned char key, int x, int y)

{

   switch (key) {

           case 'w':

        case 'W':

            Tz --;



 

            break;

                   case 's':

        case 'S':

            Tz ++;



 

            break;

            case 'a':

            case 'A':

            Tx --;



 

            break;

            

            case 'D':

            case 'd':

            Tx ++;





            break;

            

            case 'E':

            case 'e':

            Ty ++;



 

            break;

            

                        case 'Q':

            case 'q':

            Ty --;



 

            break;

            

        

    }

    glutPostRedisplay();

}


 
/* Ana fonksiyon()  */
int main(int argc, char** argv) {
   glutInit(&argc, argv);                 // Glutu Başlat
   glutCreateWindow("FORUM.GAMER.TR"); // Başlığı
   glutInitWindowSize(320, 320);   // Pencerenin eni boyu
   glutInitWindowPosition(50, 50); // Pencrenin konumu
   glutDisplayFunc(display); // Sahneyi canlandır
   glutKeyboardFunc (keyboard);
   glutMainLoop();           // Döngü
   return 0;
}
Ben bunları yapmak icin 2 saat emek veriorum lutfen 1 begeniyi cok gormeyin turkce kaynak zor bu konularda
 



Üst