bugün
- iplenmeyen yazarlar2
- iphone kullanan insan2
- recep tayyip erdoğanı sevmiyorum2
- kadın poposundan kasa diye bahseden erkek16
- sözlük kullanma amacım2
- x in memeleri5
- yazarlara verilmiş lakaplar6
- ben geldim naneler19
- 32 yaş altı yazarlar uçurulsun kampanyası2
- sözlükte flörtleşmek18
- deniz göktaş'ın gözaltına alınması18
- galatasaray3
- pandela43
- renkli gözün türkiyede çok yaygınlaşması7
- karşılıklı aşk yaşamadan ölmek8
- ferdi özbeğen9
- kız arkadaşıma hediye edeceğim araba için öneriler11
- sözlüğü siliyorum dostlar17
- devlet kim lan7
- nasılsınız6
- hem entelektüel hem sikici hem yakışıklı erkek8
- kız arkadaşın 17 saattir mesaj atmaması17
- wednesdayin annesi8
- 3 temmuz 2026 portekiz hırvatistan maçı7
- azgın türbanlı10
- çok çişi gelen insan5
- pandela tarzı entry gir6
- erkeğin vajina karşısındaki çaresizliği5
- erkekler olarak sokakta donla dolaşmak istiyoruz6
- sözlüğün kahve olması13
- sözlük tipsizlerinin fotoğrafları7
- arkadaşlar bu ayakkabı nasıl8
- kaçak bey kullanmayan elektrik5
- izlenmiş en kusursuz film8
- dün erkeklerin yüzde 35'i seks yapmadı4
- geceye 90 lardan bir şarkı bırak5
- alttaki yazara aşık ol11
- mmm pandela poposu kocaman5
- sözlüğün gerizekalı kaynaması2
- menekşe moru oje4
- evlenmekten korkmak10
- dikkat dikkat tai lung kız11
- annenin ölmesi5
- sözlüğün zıvanadan çıkması4
- alain delon vs cüneyt arkın5
- gay oğlunu sevgilisiyle basan baba3
- ispanyol erkeklerini türk erkekleriyle takas etmek4
- 35 yaşında ölmek4
- sevgiliyle sevişirken akla ilyas salmanın gelmesi3
- türk müsün6
aşağıdaki programda zeminin kütleçekim değeriyle, mavi küpün ağırlığı, zıplama hızı, yatay hareket hızı, a, d tuşlarının uyguladığı kuvvetle küpün kazanacağı hız dahil tüm fizik değişkenlerini dilediğiniz gibi değiştirebilir ve eğik atış simülasyonunun tadını çıkarabilirsiniz. fizik ödevleri için de kullanılabilir:
#include <SFML/Graphics.hpp> // SFML grafik kütüphanesini dahil et
#include <cmath> // Matematik fonksiyonları için gerekli kütüphane
#include <sstream> // String akışları için gerekli kütüphane
// Sabitler
const float GRAVITY = 681.0f; // Yerçekimi ivmesi (N)
const float JUMP_SPEED = 400.0f; // Atlama hızı (m/s)
const float MOVE_SPEED = 300.0f; // Yatay hareket hızı (m/s)
const float BOOST_MULTIPLIER = 1.5f; // Hız artışı çarpanı
const float DOUBLE_JUMP_MULTIPLIER = 1.5f; // ikili atlama hız çarpanı
const float FLOOR_Y = 540.0f; // Zemin seviyesi (Y-koordinatı)
const float WINDOW_WIDTH = 1920.0f; // Pencere genişliği
const float WINDOW_HEIGHT = 1080.0f; // Pencere yüksekliği
const float AIR_DRAG_COEFFICIENT = 0.1f; // Hava sürüklenme katsayısı (yatay hız üzerinde etkili)
// Mavi kare ağırlığı
const float BLUE_SQUARE_WEIGHT = 50.0f; // Ağırlık (kg)
// Hızlandırma için sabitler
const float ADDITIONAL_SPEED_WHEN_SPACE_PRESSED = 150.0f; // Boşluk tuşuna basıldığında kazanılacak hız
const float ADDITIONAL_SPEED_A = 100.0f; // A tuşuna basıldığında kazanılacak hız
const float ADDITIONAL_SPEED_D = 100.0f; // D tuşuna basıldığında kazanılacak hız
int main()
{
// Pencereyi oluştur
sf::RenderWindow window(sf::VideoMode(WINDOW_WIDTH, WINDOW_HEIGHT), "2D-EGIK ATIS HAREKETI");
// Yazı tipi yükle
sf::Font font;
if (!font.loadFromFile("/home/kratertepesi/Masaüstü/Programlar/arial.ttf")) {
return -1; // Yazı tipi yüklenemezse programı kapat
}
// Başlık metni oluştur
sf::Text titleText("2D-EGIK ATIS HAREKETI", font, 50);
titleText.setFillColor(sf::Color::White); // Başlık rengini beyaz yap
titleText.setPosition(WINDOW_WIDTH / 2 - titleText.getGlobalBounds().width / 2, 10); // Başlık konumunu ayarla
// Mavi kare oluştur
sf::RectangleShape blueSquare(sf::Vector2f(50.0f, 50.0f));
blueSquare.setFillColor(sf::Color::Blue); // Mavi kare rengini mavi yap
blueSquare.setPosition(960, FLOOR_Y); // Mavi karenin başlangıç konumunu ayarla
// Zemin oluştur
sf::RectangleShape ground(sf::Vector2f(WINDOW_WIDTH, WINDOW_HEIGHT - (FLOOR_Y + blueSquare.getSize().y)));
ground.setFillColor(sf::Color::Green); // Zemin rengini yeşil yap
ground.setPosition(0, FLOOR_Y + blueSquare.getSize().y); // Zemin konumunu ayarla
// Gökyüzü oluştur
sf::RectangleShape sky(sf::Vector2f(WINDOW_WIDTH, FLOOR_Y - blueSquare.getSize().y)); // Gökyüzü boyutu, karenin bir kenarı kadar aşağı kaydırıldı
sky.setFillColor(sf::Color(135, 206, 235)); // Gökyüzü rengini ayarla
// Durum değişkenleri
bool jumping = false; // Atlama durumu
bool onGround = true; // Zemin üzerindeyken
bool doubleJumpReady = false; // ikili atlama hazır durumu
float xVelocity = 0.0f; // Yatay hız
float yVelocity = 0.0f; // Dikey hız
sf::Clock clock; // Zamanlayıcı oluştur
sf::Text angleText, forceText; // Açı ve kuvvet metni için değişkenler
angleText.setFont(font); // Yazı tipini ayarla
angleText.setCharacterSize(24); // Yazı boyutunu ayarla
angleText.setFillColor(sf::Color::White); // Yazı rengini beyaz yap
forceText.setFont(font); // Yazı tipini ayarla
forceText.setCharacterSize(24); // Yazı boyutunu ayarla
forceText.setFillColor(sf::Color::White); // Yazı rengini beyaz yap
while (window.isOpen()) // Pencere açık olduğu sürece
{
sf::Event event;
while (window.pollEvent(event)) // Olayları kontrol et
{
if (event.type == sf::Event::Closed) // Pencere kapatıldıysa
window.close(); // Pencereyi kapat
}
float dt = clock.restart().asSeconds(); // Delta zamanını hesapla
float currentMoveSpeed = MOVE_SPEED; // Geçerli hareket hızını ayarla
float currentJumpSpeed = JUMP_SPEED; // Geçerli atlama hızını ayarla
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space)) // Boşluk tuşuna basılmışsa
{
currentMoveSpeed += ADDITIONAL_SPEED_WHEN_SPACE_PRESSED; // Hız artışını uygula
currentJumpSpeed *= BOOST_MULTIPLIER; // Atlama hızını artır
}
// Yatay hareket kontrolü
if (sf::Keyboard::isKeyPressed(sf::Keyboard::A)) // A tuşuna basılmışsa
{
xVelocity = -currentMoveSpeed - ADDITIONAL_SPEED_A; // Sola hareket et
}
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::D)) // D tuşuna basılmışsa
{
xVelocity = currentMoveSpeed + ADDITIONAL_SPEED_D; // Sağa hareket et
}
else
{
xVelocity = 0.0f; // Hiçbir tuşa basılmıyorsa yatay hızı sıfırla
}
// Hava sürüklenmesini uygula
xVelocity -= AIR_DRAG_COEFFICIENT * xVelocity; // Basit sürüklenme formülü
// Atlama kontrolü
if (sf::Keyboard::isKeyPressed(sf::Keyboard::W) && onGround) // W tuşuna ve yerdeyse
{
jumping = true; // Atlama gerçekleşiyor
onGround = false; // Artık yerden yüksekte
yVelocity = -currentJumpSpeed; // Dikey hız ayarla
doubleJumpReady = true; // ikili atlama hazır
}
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::W) && doubleJumpReady) // W tuşuna basılmışsa ve ikili atlama hazırsa
{
yVelocity = -currentJumpSpeed * DOUBLE_JUMP_MULTIPLIER; // ikili atlama için hızı artır
doubleJumpReady = false; // ikili atlama kullanılmadı
}
if (!onGround) // Eğer yerden yüksekteyse
{
yVelocity += GRAVITY * dt; // Dikey hıza yerçekimini ekle
}
blueSquare.move(xVelocity * dt, yVelocity * dt); // Mavi karenin konumunu güncelle
float angle = atan2(-yVelocity, xVelocity) * 180 / 3.14159; // Açıyı hesapla
float force = (BLUE_SQUARE_WEIGHT * yVelocity); // Ağırlığı hesaba kat
// Açı ve kuvvet metni oluştur
std::stringstream angleStream, forceStream;
angleStream << "Angle: " << angle << " degrees"; // Açı metnini oluştur
forceStream << "Force: " << force << " N"; // Kuvvet metnini oluştur
angleText.setString(angleStream.str()); // Açı metnini ayarla
forceText.setString(forceStream.str()); // Kuvvet metnini ayarla
angleText.setPosition(10, 10); // Açı metninin konumunu ayarla
forceText.setPosition(10, 40); // Kuvvet metninin konumunu ayarla
// Yerde olup olmadığını kontrol et
if (blueSquare.getPosition().y >= FLOOR_Y)
{
blueSquare.setPosition(blueSquare.getPosition().x, FLOOR_Y); // Mavi karenin zemin konumunu ayarla
yVelocity = 0.0f; // Dikey hızı sıfırla
onGround = true; // Yerde olduğunu belirt
doubleJumpReady = false; // ikili atlama hazır değil
}
// Pencereyi temizle ve gökyüzünü, zemin ve mavi kareyi çiz
window.clear();
window.draw(sky); // Gökyüzünü çiz
window.draw(ground); // Zeminini çiz
window.draw(blueSquare); // Mavi kareyi çiz
window.draw(titleText); // Başlık metnini çiz
window.draw(angleText); // Açı metnini çiz
window.draw(forceText); // Kuvvet metnini çiz
window.display(); // Pencereyi güncelle
}
return 0; // Program başarıyla tamamlandı
}
#include <SFML/Graphics.hpp> // SFML grafik kütüphanesini dahil et
#include <cmath> // Matematik fonksiyonları için gerekli kütüphane
#include <sstream> // String akışları için gerekli kütüphane
// Sabitler
const float GRAVITY = 681.0f; // Yerçekimi ivmesi (N)
const float JUMP_SPEED = 400.0f; // Atlama hızı (m/s)
const float MOVE_SPEED = 300.0f; // Yatay hareket hızı (m/s)
const float BOOST_MULTIPLIER = 1.5f; // Hız artışı çarpanı
const float DOUBLE_JUMP_MULTIPLIER = 1.5f; // ikili atlama hız çarpanı
const float FLOOR_Y = 540.0f; // Zemin seviyesi (Y-koordinatı)
const float WINDOW_WIDTH = 1920.0f; // Pencere genişliği
const float WINDOW_HEIGHT = 1080.0f; // Pencere yüksekliği
const float AIR_DRAG_COEFFICIENT = 0.1f; // Hava sürüklenme katsayısı (yatay hız üzerinde etkili)
// Mavi kare ağırlığı
const float BLUE_SQUARE_WEIGHT = 50.0f; // Ağırlık (kg)
// Hızlandırma için sabitler
const float ADDITIONAL_SPEED_WHEN_SPACE_PRESSED = 150.0f; // Boşluk tuşuna basıldığında kazanılacak hız
const float ADDITIONAL_SPEED_A = 100.0f; // A tuşuna basıldığında kazanılacak hız
const float ADDITIONAL_SPEED_D = 100.0f; // D tuşuna basıldığında kazanılacak hız
int main()
{
// Pencereyi oluştur
sf::RenderWindow window(sf::VideoMode(WINDOW_WIDTH, WINDOW_HEIGHT), "2D-EGIK ATIS HAREKETI");
// Yazı tipi yükle
sf::Font font;
if (!font.loadFromFile("/home/kratertepesi/Masaüstü/Programlar/arial.ttf")) {
return -1; // Yazı tipi yüklenemezse programı kapat
}
// Başlık metni oluştur
sf::Text titleText("2D-EGIK ATIS HAREKETI", font, 50);
titleText.setFillColor(sf::Color::White); // Başlık rengini beyaz yap
titleText.setPosition(WINDOW_WIDTH / 2 - titleText.getGlobalBounds().width / 2, 10); // Başlık konumunu ayarla
// Mavi kare oluştur
sf::RectangleShape blueSquare(sf::Vector2f(50.0f, 50.0f));
blueSquare.setFillColor(sf::Color::Blue); // Mavi kare rengini mavi yap
blueSquare.setPosition(960, FLOOR_Y); // Mavi karenin başlangıç konumunu ayarla
// Zemin oluştur
sf::RectangleShape ground(sf::Vector2f(WINDOW_WIDTH, WINDOW_HEIGHT - (FLOOR_Y + blueSquare.getSize().y)));
ground.setFillColor(sf::Color::Green); // Zemin rengini yeşil yap
ground.setPosition(0, FLOOR_Y + blueSquare.getSize().y); // Zemin konumunu ayarla
// Gökyüzü oluştur
sf::RectangleShape sky(sf::Vector2f(WINDOW_WIDTH, FLOOR_Y - blueSquare.getSize().y)); // Gökyüzü boyutu, karenin bir kenarı kadar aşağı kaydırıldı
sky.setFillColor(sf::Color(135, 206, 235)); // Gökyüzü rengini ayarla
// Durum değişkenleri
bool jumping = false; // Atlama durumu
bool onGround = true; // Zemin üzerindeyken
bool doubleJumpReady = false; // ikili atlama hazır durumu
float xVelocity = 0.0f; // Yatay hız
float yVelocity = 0.0f; // Dikey hız
sf::Clock clock; // Zamanlayıcı oluştur
sf::Text angleText, forceText; // Açı ve kuvvet metni için değişkenler
angleText.setFont(font); // Yazı tipini ayarla
angleText.setCharacterSize(24); // Yazı boyutunu ayarla
angleText.setFillColor(sf::Color::White); // Yazı rengini beyaz yap
forceText.setFont(font); // Yazı tipini ayarla
forceText.setCharacterSize(24); // Yazı boyutunu ayarla
forceText.setFillColor(sf::Color::White); // Yazı rengini beyaz yap
while (window.isOpen()) // Pencere açık olduğu sürece
{
sf::Event event;
while (window.pollEvent(event)) // Olayları kontrol et
{
if (event.type == sf::Event::Closed) // Pencere kapatıldıysa
window.close(); // Pencereyi kapat
}
float dt = clock.restart().asSeconds(); // Delta zamanını hesapla
float currentMoveSpeed = MOVE_SPEED; // Geçerli hareket hızını ayarla
float currentJumpSpeed = JUMP_SPEED; // Geçerli atlama hızını ayarla
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space)) // Boşluk tuşuna basılmışsa
{
currentMoveSpeed += ADDITIONAL_SPEED_WHEN_SPACE_PRESSED; // Hız artışını uygula
currentJumpSpeed *= BOOST_MULTIPLIER; // Atlama hızını artır
}
// Yatay hareket kontrolü
if (sf::Keyboard::isKeyPressed(sf::Keyboard::A)) // A tuşuna basılmışsa
{
xVelocity = -currentMoveSpeed - ADDITIONAL_SPEED_A; // Sola hareket et
}
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::D)) // D tuşuna basılmışsa
{
xVelocity = currentMoveSpeed + ADDITIONAL_SPEED_D; // Sağa hareket et
}
else
{
xVelocity = 0.0f; // Hiçbir tuşa basılmıyorsa yatay hızı sıfırla
}
// Hava sürüklenmesini uygula
xVelocity -= AIR_DRAG_COEFFICIENT * xVelocity; // Basit sürüklenme formülü
// Atlama kontrolü
if (sf::Keyboard::isKeyPressed(sf::Keyboard::W) && onGround) // W tuşuna ve yerdeyse
{
jumping = true; // Atlama gerçekleşiyor
onGround = false; // Artık yerden yüksekte
yVelocity = -currentJumpSpeed; // Dikey hız ayarla
doubleJumpReady = true; // ikili atlama hazır
}
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::W) && doubleJumpReady) // W tuşuna basılmışsa ve ikili atlama hazırsa
{
yVelocity = -currentJumpSpeed * DOUBLE_JUMP_MULTIPLIER; // ikili atlama için hızı artır
doubleJumpReady = false; // ikili atlama kullanılmadı
}
if (!onGround) // Eğer yerden yüksekteyse
{
yVelocity += GRAVITY * dt; // Dikey hıza yerçekimini ekle
}
blueSquare.move(xVelocity * dt, yVelocity * dt); // Mavi karenin konumunu güncelle
float angle = atan2(-yVelocity, xVelocity) * 180 / 3.14159; // Açıyı hesapla
float force = (BLUE_SQUARE_WEIGHT * yVelocity); // Ağırlığı hesaba kat
// Açı ve kuvvet metni oluştur
std::stringstream angleStream, forceStream;
angleStream << "Angle: " << angle << " degrees"; // Açı metnini oluştur
forceStream << "Force: " << force << " N"; // Kuvvet metnini oluştur
angleText.setString(angleStream.str()); // Açı metnini ayarla
forceText.setString(forceStream.str()); // Kuvvet metnini ayarla
angleText.setPosition(10, 10); // Açı metninin konumunu ayarla
forceText.setPosition(10, 40); // Kuvvet metninin konumunu ayarla
// Yerde olup olmadığını kontrol et
if (blueSquare.getPosition().y >= FLOOR_Y)
{
blueSquare.setPosition(blueSquare.getPosition().x, FLOOR_Y); // Mavi karenin zemin konumunu ayarla
yVelocity = 0.0f; // Dikey hızı sıfırla
onGround = true; // Yerde olduğunu belirt
doubleJumpReady = false; // ikili atlama hazır değil
}
// Pencereyi temizle ve gökyüzünü, zemin ve mavi kareyi çiz
window.clear();
window.draw(sky); // Gökyüzünü çiz
window.draw(ground); // Zeminini çiz
window.draw(blueSquare); // Mavi kareyi çiz
window.draw(titleText); // Başlık metnini çiz
window.draw(angleText); // Açı metnini çiz
window.draw(forceText); // Kuvvet metnini çiz
window.display(); // Pencereyi güncelle
}
return 0; // Program başarıyla tamamlandı
}
Gündemdeki Haberler
Güncel Önemli Başlıklar