• 6 Active Topics
    Cevaplar
    Görüntüleme
    Son mesaj

 

 

 

✨ TEKNOFENOMEN'DE YAPAY ZEKA DÖNEMİ BAŞLADI ✨
Türkiye'nin Yapay Zeka Destekli Teknoloji Forumuna Hoş Geldiniz
TeknoFenomen artık sadece bir forum değil. Artık forumumuzda sorularınıza cevap verebilen bir yapay zeka var.
🤖 ✨ Tuni AI, teknoloji ve genel bilgi konularında size yardımcı olmak için forumumuza entegre edilmiştir. Donanım, yazılım, teknoloji ve birçok konuda sorular sorabilir ve hızlı cevaplar alabilirsiniz.

✨Tuni AI Nasıl Kullanılır?
Bir konuya mesaj yazarken veya yeni konu açarken mesajınıza: @tuni yazarak sorunuzu sorabilirsiniz.
Tuni AI mesajınızı analiz eder ve konuya otomatik olarak cevap verir.

Ruby İle Görsel Programlama [Gosu Library] - Oyun Projesi

Moderatör: aknctn

1 OY
ÖNE ÇIKAN KONU
Bu konu topluluk tarafından öne çıkarıldı
Toplam 1 öne çıkarma aldı.
Kullanıcı avatarı
omrkcmn
Reactions:
Mesajlar: 841
Kayıt: 18 Nis 2019 00:19
Cevaplar: 1
Has thanked: 214 time
Been thanked: 161 time

Ruby İle Görsel Programlama [Gosu Library] - Oyun Projesi

Okunmamış mesaj gönderen omrkcmn »

Lafı uzatmaya gerek yok. İnternette neredeyse hiç Türkçe içerik yok diyebileceğimiz GOSU kütüphanesinin kullanımını basit bir şekilde göstereceğim.

Öncelikle RubyGems üzerinde

Kod: Tümünü seç

gem install gosu
yazıp yüklüyoruz.

Yapılacaklar bukadar :mrgreen:

Proje siteden alıntı bir proje. Ben geliştirmesini yaptım. Ortaya drift yapıp verilen süre içersinde yıldızlara toplamaya çalıştığınız bir oyun çıktı.

Kaynak Kod ve Proje Dosyası

Kod: Tümünü seç


require File.dirname(__FILE__) + '/gosu' #Burada gosu kütüphanesini tanımlıyorum. Bu kadar. 


module ZOrder
  BACKGROUND, STARS, PLAYER, UI = *0..3
end

$zaman = Time.now#şu anki zaman verisini alıyorum.
$oyun_bitis = false
$skor = 0
$yuksek_skor = 0

class Oyuncu
	def initialize
		@resim = Gosu::Image.new("Oyun/araba2.png")
		@x = @y = @vel_x = @vel_y = @angle = 0.0
		#@skor = 0
	end
	
	def warp(x,y)
		@x, @y = x,y
	end
	
	def sola_donus
		@angle -= 4.0
	end
	
	def saga_donus
		@angle += 4.0
	end
	
	def hiz
		@vel_x += Gosu.offset_x(@angle, 0.5)
		@vel_y += Gosu.offset_y(@angle, 0.5)
	end
	
	def ilerle
		@x += @vel_x
		@y += @vel_y
		@x %= 640
		@y %= 480
		
		@vel_x *= 0.93
		@vel_y *= 0.93
	end
	
	def gerivites
		@vel_x -= Gosu.offset_x(@angle, 0.2)
		@vel_y -= Gosu.offset_y(@angle, 0.2)
	end
	
	def draw
		@resim.draw_rot(@x,@y,1,@angle)
	end

	def yildiz_topla(yildiz)
		yildiz.reject! do |yildiz|
			if Gosu.distance(@x,@y,yildiz.x,yildiz.y)<35
				$skor += 1
				true
			else
				false
			end
		end
	end
end

class Star
  attr_reader :x, :y
  def initialize(animation)
    @animation = animation
    @color = Gosu::Color::BLACK.dup
	@color.red = rand(256 - 40) + 40
	@color.green = rand(256 - 40) + 40
    @color.blue = rand(256 - 40) + 40
    @x = rand * 640
    @y = rand * 480
  end
  def draw  
    img = @animation[Gosu.milliseconds / 100 % @animation.size]
    img.draw(@x - img.width / 2.0, @y - img.height / 2.0,
        ZOrder::STARS, 1, 1, @color, :add)
  end
end
class Pencere < Gosu::Window
	def initialize
		super 640, 480
		self.caption = "Oyun"
		@bgImage = Gosu::Image.new("Oyun/arkaplan.jpg")
		@oyuncu = Oyuncu.new
		@oyuncu.warp(320,240)
		@cikis = Gosu::Font.new(25)
		@yildiz_anim = Gosu::Image.load_tiles("Oyun/star.png",25,25)		
		@yildiz = Array.new
		@oyun_bitis_text = Gosu::Font.new(104)
		@font = Gosu::Font.new(20)
		@count_text = Gosu::Font.new(50)
		@skor_text = Gosu::Font.new(25)
		@yskor_text = Gosu::Font.new(10)	
	end
	
	def update
		@sayac = Time.now
		unless @sayac <= $zaman + 20
			$oyun_bitis = true
			return -1 #oyunun devam etmesini engelliyorum.
		end
		
		
		if Gosu.button_down? Gosu::KB_LEFT
			@oyuncu.sola_donus
			
		end
		if Gosu.button_down? Gosu::KB_RIGHT
			@oyuncu.saga_donus
		end
		if Gosu.button_down? Gosu::KB_UP
			@oyuncu.hiz
		end
		if Gosu.button_down? Gosu::KB_DOWN
			@oyuncu.gerivites
		end
		if Gosu.button_down? Gosu::KbEscape
			exit()
		end
		@oyuncu.ilerle#oyuncunun konumu
		@oyuncu.yildiz_topla(@yildiz)
		
		if rand(100) < 4 and @yildiz.size < 2   #yıldız miktarını ayarlayıp yeniden oluşturma
			@yildiz.push(Star.new(@yildiz_anim))
		end
	end
	def draw
		case $oyun_bitis
		when false
		    @bgImage.draw(0, 0, 0)
			@count_text.draw("#{(($zaman + 20) - @sayac).round(1)}", (self.width / 2) - 72, 20, 10, 1, 1, Gosu::Color::WHITE)
			@oyuncu.draw	
			@yildiz.each {|yildiz| yildiz.draw}
			@font.draw("Skor: #{$skor}",10,10,ZOrder::UI,1.0,1.0, Gosu::Color::WHITE)	
			@yskor_text.draw("En Yüksek Skor: #{$yuksek_skor}",465,10,ZOrder::UI,2.0,2.0, Gosu::Color::WHITE)
		when true
			@bgImage.draw(0, 0, 0)
			@oyun_bitis_text.draw("Oyun Bitti!",60,20,10000000)
			@skor_text.draw("Skor: #{$skor}",self.width / 4 - 25, 200, 1) 
			@cikis.draw("Çıkış İçin ESC Yeniden Başlamak İçin Space",self.width / 5.5, 400, 1)
			if($skor > $yuksek_skor)
				$yuksek_skor = $skor
			end
			if Gosu.button_down? Gosu::KbSpace
				$oyun_bitis = false
				
				$zaman = Time.now
				$skor = 0
			end
			if Gosu.button_down? Gosu::KbEscape
				exit()
			end
		end
	end
end

Pencere.new.show
Visual Studio Code üzerinden Git kullanımını bilmediğim için dosyaları sadece düz şekilde paylaşıyorum.

Proje
https://yadi.sk/d/A3E019syjRK31A

Link:
BBcode:
HTML:
Hide post links
Show post links

Son Konular

Konular yükleniyor...
Kullanıcı avatarı
aknctn
Reactions:
Mesajlar: 1108
Kayıt: 09 Nis 2019 13:53
Cevaplar: 5
Blogs: 5
Has thanked: 210 time
Been thanked: 315 time
Galaxy Z Fold5PS5RTX 5070 Ti64GBRyzen 9 9950X

Okunmamış mesaj gönderen aknctn »

Vakıf olduğum bir konu değil ama mutlaka birisinin işine yarayacaktır. Her türlü bilgi paylaşımına açık burası.

Oyun mu yazılabiliyor bununla?
Resim

Link:
BBcode:
HTML:
Hide post links
Show post links
Kullanıcı avatarı
omrkcmn
Reactions:
Mesajlar: 841
Kayıt: 18 Nis 2019 00:19
Cevaplar: 1
Has thanked: 214 time
Been thanked: 161 time

Okunmamış mesaj gönderen omrkcmn »

aknctn yazdı: 23 Kas 2019 16:54 Vakıf olduğum bir konu değil ama mutlaka birisinin işine yarayacaktır. Her türlü bilgi paylaşımına açık burası.

Oyun mu yazılabiliyor bununla?
Bu bir programlama dili. Web programlama, Masaüstü programı yazma vs gibi bir çok şeyde kullanılan bir programlama dili. Geçen yıl ödevimi yaparken çok uğraşmıştım. Türkçe içerik yoktu. Basit bir işlem için saatlerce uğraşmıştım. Birisinin işine illaki yarayacaktır.

Link:
BBcode:
HTML:
Hide post links
Show post links
Kullanıcı avatarı
aknctn
Reactions:
Mesajlar: 1108
Kayıt: 09 Nis 2019 13:53
Cevaplar: 5
Blogs: 5
Has thanked: 210 time
Been thanked: 315 time
Galaxy Z Fold5PS5RTX 5070 Ti64GBRyzen 9 9950X

Okunmamış mesaj gönderen aknctn »

Kesinlikle. Teşekkürler..
Resim

Link:
BBcode:
HTML:
Hide post links
Show post links
Cevapla Önceki başlıkSonraki başlık

“Programcılık” sayfasına dön