Share c++ piano source code

hochuan.khoa

New member
## mã nguồn piano C ++

### Giới thiệu

Bài viết này cung cấp mã nguồn cho một cây đàn piano đơn giản trong C ++.Piano được triển khai bằng thư viện SFML, cung cấp API đơn giản và dễ sử dụng để tạo các ứng dụng âm thanh và đồ họa.Đàn piano có thể được chơi bằng cách nhấn các phím trên bàn phím và âm thanh của mỗi phím được phát bằng cách sử dụng một mẫu từ một cây đàn piano thực sự.

### Mã số

Sau đây là mã cho piano:

`` `C ++
#include <sfml/audio.hpp>
#include <sfml/graphics.hpp>

int main ()
{
// Tạo cửa sổ
SF :: RenderWindow Window (SF :: VideoMode (800, 600), "Piano");

// Tạo bàn phím
Bàn phím SF :: Bàn phím;

// Tạo các phím piano
SF :: Phím hình chữ nhật [88];
for (int i = 0; i <88; i ++)
{
khóa .setsize (sf :: vector2f (100, 100));
phím .setPoseition (sf :: vector2f (100 + i * 100, 500));
}

// Tạo âm thanh piano
SF :: Bộ đệm Soundbuffer;
buffer.loadFromFile ("piano.wav");
SF :: Âm thanh;
Sound.SetBuffer (bộ đệm);

// Bắt đầu vòng lặp trò chơi
while (window.isopen ())
{
// Xử lý các sự kiện
Sự kiện SF :: Sự kiện;
while (window.pollevent (sự kiện))
{
if (event.type == sf :: event :: đã đóng)
cửa sổ.close ();

if (event.type == sf :: event :: keypression)
{
// phát âm thanh của phím đã được nhấn
int key = event.key.code;
if (khóa> = 48 && khóa <= 87)
{
Sound.Play ();
}
}
}

// Cập nhật các phím piano
for (int i = 0; i <88; i ++)
{
// Đặt màu của phím thành màu trắng nếu nó được nhấn và màu đen khác
SF :: Màu sắc = SF :: Color :: White;
if (! keyboard.iskeypression (sf :: keyboard :: key (i + 48))))
màu = sf :: color :: đen;
phím .setfillColor (màu);
}

// Vẽ các phím piano
cửa sổ.clear ();
for (int i = 0; i <88; i ++)
{
window.Draw (phím );
}
window.display ();
}

trả lại 0;
}
`` `

### Cách chơi

Để chơi piano, chỉ cần nhấn các phím trên bàn phím.Âm thanh của mỗi phím được phát bằng cách sử dụng một mẫu từ một cây đàn piano thực sự.

### Người giới thiệu

* [Tài liệu SFML] (Main Page (SFML / Learn / 2.5.1 Documentation))
* [Mẫu piano] (https://www.freesound.org/search/piano/)

### hashtags

* #C ++
* #đàn piano
* #Âm nhạc
* #Âm thanh
* #SFML
=======================================
## C++ Piano Source Code

### Introduction

This article provides the source code for a simple piano in C++. The piano is implemented using the SFML library, which provides a simple and easy-to-use API for creating audio and graphics applications. The piano can be played by pressing the keys on the keyboard, and the sound of each key is played using a sample from a real piano.

### Code

The following is the code for the piano:

```c++
#include <SFML/Audio.hpp>
#include <SFML/Graphics.hpp>

int main()
{
// Create the window
sf::RenderWindow window(sf::VideoMode(800, 600), "Piano");

// Create the keyboard
sf::Keyboard keyboard;

// Create the piano keys
sf::RectangleShape keys[88];
for (int i = 0; i < 88; i++)
{
keys.setSize(sf::Vector2f(100, 100));
keys.setPosition(sf::Vector2f(100 + i * 100, 500));
}

// Create the piano sound
sf::SoundBuffer buffer;
buffer.loadFromFile("piano.wav");
sf::Sound sound;
sound.setBuffer(buffer);

// Start the game loop
while (window.isOpen())
{
// Handle events
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();

if (event.type == sf::Event::KeyPressed)
{
// Play the sound of the key that was pressed
int key = event.key.code;
if (key >= 48 && key <= 87)
{
sound.play();
}
}
}

// Update the piano keys
for (int i = 0; i < 88; i++)
{
// Set the color of the key to white if it is pressed, and black otherwise
sf::Color color = sf::Color::White;
if (!keyboard.isKeyPressed(sf:⌨️:Key(i + 48)))
color = sf::Color::Black;
keys.setFillColor(color);
}

// Draw the piano keys
window.clear();
for (int i = 0; i < 88; i++)
{
window.draw(keys);
}
window.display();
}

return 0;
}
```

### How to Play

To play the piano, simply press the keys on the keyboard. The sound of each key is played using a sample from a real piano.

### References

* [SFML Documentation](https://www.sfml-dev.org/documentation/2.5.1/)
* [Piano Samples](https://www.freesound.org/search/piano/)

### Hashtags

* #C++
* #Piano
* #Music
* #Sound
* #SFML
 
Join Telegram ToolsKiemTrieuDoGroup
Back
Top