نمایش نتایج 1 تا 3 از 3

نام تاپیک: کمک در تکمیل بازی tetris در C#‎

  1. #1

    کمک در تکمیل بازی tetris در C#‎

    سلام دوستان
    من برنامه نویسی زیاد بلد نیستم مخصوصا سی شارپ .
    این ترم گرافیک برداشتم و پروژه ام نوشتن بازی تتریس هست
    تو سایت همسایه یکی از دوستان گل زحمت کشید بیس برنامه رو برام نوشت که من تکمیل کنم اما واقعا هر چی به مخم فشار آوردم نتونستم
    دوستان هرکی میتونه ثواب داره باور کنید اینو برام کامل کنه سه شنبه (پس فردا ) آخرین مهلت تحویلشه
    تو رو خدا کمک کنید
    اگه کسی نوشت برام میل کنه بیزحمت
    yasser.irani72@gmail.com

    نقل قول نوشته شده توسط _H2_ مشاهده تاپیک
    سلام
    اول تصمیم داشتم یک راه حل کامل بر مبنای اصول شی گرایی برایتان ارائه دهم ولی هرچه فکر کردم دیدم شاید کمی برایتان سخت شود...

    گمانم کلش یک کلاس باشد (مثلاً همان فرم اصلی برنامه) خیلی خیلی ساده تر باشد و زودتر به جواب نهاییتان برسید.

    پیشنهاد میکنم، فعلاً علی الحساب پیشنهاد میکنم کد زیر را گرفته و توابع خالی را تکمیل کنید.

    بخش هایی را برایتان تکمیل کرده ام...

    در واقع الآن مسئله شما را به چند تابع کوچک شکسته ام که امیدوارم بتوانید این بخش های کوچک ساده را تکمیل کنید.

    بخش هایی که باید تکمیل کنید با ... code مشخص شده اند.


    using System;
    using System.Drawing;
    using System.Windows.Forms;

    namespace WindowsFormsApplication1
    {
    public partial class Form1
    : Form
    {
    //__________________________________________________ ______________________

    public Form1()
    {
    this.InitializeComponent();
    this.SetStyle(
    ControlStyles.ResizeRedraw |
    ControlStyles.AllPaintingInWmPaint |
    ControlStyles.OptimizedDoubleBuffer, true);

    this.CreateNewRandShape();
    this.timer1.Start();
    }
    //__________________________________________________ ______________________

    private const int PLAYGROUND_WIDTH = 10;
    private const int PLAYGROUND_HEIGHT = 20;
    private const int SHAPE_WIDTH_HEIGHT = 4; //4*4 Square
    //__________________________________________________ ______________________

    private readonly Random m_Rand = new Random();
    private readonly bool[,] m_Playground = new bool[PLAYGROUND_WIDTH, PLAYGROUND_HEIGHT];
    private int m_Score = 0;
    private bool[,] m_Shape;
    private System.Drawing.Point m_ShapePosition;
    //__________________________________________________ ______________________

    //یکپارچه کردن شکل جاری روی زمین بازی
    private void MergeShapeOnPlayground()
    {
    for (int y = 0; y < SHAPE_WIDTH_HEIGHT; y++)
    for (int x = 0; x < SHAPE_WIDTH_HEIGHT; x++)
    if (this.m_Shape[x, y]) this.m_Playground[this.m_ShapePosition.X + x, this.m_ShapePosition.Y + y] = true;
    }
    //__________________________________________________ ______________________

    //ساخت رندوم شکل جدید
    private void CreateNewRandShape()
    {
    //top-center of playground
    this.m_ShapePosition.Y = 0;
    this.m_ShapePosition.X = (PLAYGROUND_WIDTH - SHAPE_WIDTH_HEIGHT) / 2;

    switch (this.m_Rand.Next(1, 5))
    {
    case 1: //vertical line
    this.m_Shape = new bool[,] {
    {false,false,true,false},
    {false,false,true,false},
    {false,false,true,false},
    {false,false,true,false} };
    break;

    case 2:
    //code...
    //this.m_Shape = ...
    break;

    case 3:
    //code...
    //this.m_Shape = ...
    break;

    case 4:
    //code...
    //this.m_Shape = ...
    break;

    case 5:
    //code...
    //this.m_Shape = ...
    break;
    }
    }
    //__________________________________________________ ______________________

    //چرخش نود درجه ای شکل جاری
    private void ShapeRotate90(bool Clockwise)
    {
    if (!Clockwise)
    {
    this.ShapeRotate90(true);
    this.ShapeRotate90(true);
    this.ShapeRotate90(true);
    return;
    }

    //rotate 'm_Shape' 90-degree in clockwise
    //code...
    }
    //__________________________________________________ ______________________

    //خط های افقی پرشده را پیدا کرده و ضمن افزایش امتیاز بازیکن ماتریس زمین را با شیفت بازسازی میکند
    private void FindAndRemoveHorizontalFillLines()
    {
    for (int y = 0; y < PLAYGROUND_HEIGHT; y++)
    {
    bool isfill = true;
    for (int x = 0; x < PLAYGROUND_WIDTH; x++)
    {
    if (!this.m_Playground[x, y])
    {
    isfill = false;
    break;
    }
    }
    if (!isfill) continue;

    //find a fill line
    this.m_Score++;
    //shift up-to-down 'm_Playground' matrix
    //code...
    }
    }
    //__________________________________________________ ______________________

    //بررسی انکه شکل جاری در نقطه داده شده با ماتریس زمین تداخل و همپوشانی دارد یا نه
    private bool HasOverlap()
    {
    for (int y = 0; y < SHAPE_WIDTH_HEIGHT; y++)
    for (int x = 0; x < SHAPE_WIDTH_HEIGHT; x++)
    if (this.m_Playground[this.m_ShapePosition.X + x, this.m_ShapePosition.Y + y] && this.m_Shape[x, y])
    return true;

    return false;
    }
    //__________________________________________________ ______________________

    //سرریز تایمر
    private void timer1_Tick(object sender, EventArgs e)
    {
    this.m_ShapePosition.Y++;
    if (this.HasOverlap())
    {
    this.m_ShapePosition.Y--;
    this.MergeShapeOnPlayground();
    this.FindAndRemoveHorizontalFillLines();
    this.CreateNewRandShape();
    if (this.HasOverlap())
    {
    MessageBox.Show(this, "Game Over!");
    this.Close();
    }
    }

    this.Invalidate(); //re-paint
    }
    //__________________________________________________ ______________________

    //تابع ترسیم فرم
    protected override void OnPaint(PaintEventArgs e)
    {
    base.OnPaint(e);
    e.Graphics.Clear(this.BackColor);
    this.OnPaint(e.Graphics, this.m_Playground, Point.Empty);
    this.OnPaint(e.Graphics, this.m_Shape, this.m_ShapePosition);
    }
    //__________________________________________________ ______________________

    //ترسیم یک ماتریس در نقطه داده شده
    private void OnPaint(Graphics graph, bool[,] shape, Point position)
    {
    //code...
    //graph.FillRectangle(Brushes.Blue, ...)
    }
    //__________________________________________________ ______________________

    }
    }

  2. #2

    نقل قول: کمک در تکمیل بازی tetris در C#‎

    اینو یادم رفت بگم کل هدف این برنامه استفاده از setpixel هستش واسه ترسیم

  3. #3

    نقل قول: کمک در تکمیل بازی tetris در C#‎‎

    یکی کمک کنه تو رو خدا تا فردا صبح وقت دارم فقط

تاپیک های مشابه

  1. گفتگو: کمک برای تکمیل گیم پلی بازی
    نوشته شده توسط AliyerEdon در بخش طراحی و ساخت بازی‌های کامپیوتری
    پاسخ: 6
    آخرین پست: سه شنبه 30 تیر 1388, 10:23 صبح
  2. کمک در مورد بازی دوز
    نوشته شده توسط hosinname در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 17
    آخرین پست: چهارشنبه 11 بهمن 1385, 20:41 عصر
  3. کمک برای نوشتن بازی با VB
    نوشته شده توسط BENY در بخش طراحی و ساخت بازی‌های کامپیوتری
    پاسخ: 2
    آخرین پست: جمعه 06 بهمن 1385, 12:47 عصر
  4. درخواست کمک برای ساخت بازی خانه سازی Trisبرای پروژه درسی
    نوشته شده توسط ali2914 در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: پنج شنبه 26 خرداد 1384, 21:24 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •