اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

يمكن استخدام لغة C++ لرسم ثلاث أهرامات بجانب بعض باستخدام حلقات التكرار والدوال المساعدة في مكتبة الرسم المختارة. وهذا مثال بسيط يرسم ثلاث أهرامات بجانب بعض باستخدام مكتبة SDL:

#include <iostream>
#include <SDL.h>

// تعريف الثوابت اللازمة للبرنامج
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int PYRAMID_HEIGHT = 10;
const int PYRAMID_SPACING = 20;
const int PYRAMID_BASE_WIDTH = 10;

int main(int argc, char* args[]) {
    // تهيئة المكتبة
    SDL_Init(SDL_INIT_VIDEO);
    SDL_Window* window = SDL_CreateWindow("Pyramids", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
    SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
    SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);

    // عمل حلقة لرسم الأهرامات
    for (int i = 0; i < 3; i++) {
        // حساب إحداثيات الأهرام
        int x = (SCREEN_WIDTH / 4) + (i * (PYRAMID_BASE_WIDTH + PYRAMID_SPACING));
        int y = SCREEN_HEIGHT - PYRAMID_HEIGHT;

        // عمل حلقة لرسم الصفوف في الأهرام
        for (int j = 0; j < PYRAMID_HEIGHT; j++) {
            // حساب إحداثيات الصف
            int rowWidth = PYRAMID_BASE_WIDTH - j;
            int rowX = x + ((PYRAMID_BASE_WIDTH - rowWidth) / 2);
            int rowY = y - (j * 10);

            // رسم النجوم في الصف
            for (int k = 0; k < rowWidth; k++) {
                SDL_RenderDrawPoint(renderer, rowX + k, rowY);
            }
        }
    }

    // عرض الرسم على الشاشة وانتظار الإغلاق
    SDL_RenderPresent(renderer);
    SDL_Delay(5000);

    // تحرير الموارد والخروج
    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();
    return 0;
}

يمكن تعديل قيم الثوابت المعرفة في البرنامج لتحقيق نتائج مختلفة. ويمكن استخدام الحلقات لتوسيع الرسم وإضافة مزيد من الأشكال.

  • 0
نشر

يمكنك الاعتماد فقط على الحلقات التكرارية وكتابة الشيفرة المبسطة التالية:

#include <iostream>
using namespace std;

void drawPyramid(int height) {
    for (int i = 1; i <= height; i++) {
        for (int j = 1; j <= height - i; j++) {
            cout << " ";
        }
        for (int j = 1; j <= 2 * i - 1; j++) {
            cout << "*";
        }
        cout << " ";
    }
    cout << endl;
}

int main() {
    int pyramidHeight = 5;
    // لرسم الأهرامات بجانب بعضها فقط نستدعي التابع السابق حسب الطول
    for (int i = 1; i <= pyramidHeight; i++) {
        drawPyramid(i);
    }
    return 0;
}

ويمكنك التحكّم بطول كل عنصر من خلال المتغيّر height، ستكون النتيجة بالشكل التالي:

    *         *         *     
   ***       ***       ***    
  *****     *****     *****   
 *******   *******   *******  
********* ********* *********

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...