Ruby İle Görsel Programlama [Gosu Library] - Oyun Projesi
Moderatör: aknctn
-
omrkcmn Verified
- Moderatör
- Makaleler: 0
- Mesajlar: 653
- Kayıt: 18 Nis 2019 00:19
- 5
- Teşekkür etti: 190 kez
- Teşekkür edildi: 130 kez
Ruby İle Görsel Programlama [Gosu Library] - Oyun Projesi
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
yazıp yüklüyoruz.
Yapılacaklar bukadar
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ı
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
Öncelikle RubyGems üzerinde
Kod: Tümünü seç
gem install gosu
Yapılacaklar bukadar
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
Proje
https://yadi.sk/d/A3E019syjRK31A
Link: | |
BBcode: | |
HTML: | |
Hide post links |
-
aknctn Verified
- Moderatör
- Makaleler: 0
- Mesajlar: 791
- Kayıt: 09 Nis 2019 13:53
- 5
- Ruh hali:
- Teşekkür etti: 165 kez
- Teşekkür edildi: 239 kez
Re: Ruby İle Görsel Programlama [Gosu Library] - Oyun Projesi
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?
Oyun mu yazılabiliyor bununla?
Link: | |
BBcode: | |
HTML: | |
Hide post links |
-
omrkcmn Verified
- Moderatör
- Makaleler: 0
- Mesajlar: 653
- Kayıt: 18 Nis 2019 00:19
- 5
- Teşekkür etti: 190 kez
- Teşekkür edildi: 130 kez
Re: Ruby İle Görsel Programlama [Gosu Library] - Oyun Projesi
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 |
-
aknctn Verified
- Moderatör
- Makaleler: 0
- Mesajlar: 791
- Kayıt: 09 Nis 2019 13:53
- 5
- Ruh hali:
- Teşekkür etti: 165 kez
- Teşekkür edildi: 239 kez
Re: Ruby İle Görsel Programlama [Gosu Library] - Oyun Projesi
Kesinlikle. Teşekkürler..
Link: | |
BBcode: | |
HTML: | |
Hide post links |