• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

mellony

Animação com objectos geometricos em c++/CLI

2 mensagens neste tópico

Boas :D

Preciso de ajuda urgente num programa que tem como objectivo fazer com que um circulo salte por sima de 2 obstáculos, e um outro em que o circulo faça o mesmo movimento que uma pessoa faz quando está a andar de skate numa daquelas rampas que sobem e descem.

Em baixo deixo o código fonte ainda por completar.

Espero não ocupar muito o vosso tempo :P

Cumps.

#pragma once


namespace animation {

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;

/// <summary>
/// Summary for Form1
///
/// WARNING: If you change the name of this class, you will need to change the
///          'Resource File Name' property for the managed resource compiler tool
///          associated with all .resx files this class depends on.  Otherwise,
///          the designers will not be able to interact properly with localized
///          resources associated with this form.
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
	Form1(void)
	{
		InitializeComponent();
		i=0;
		n = 30;  // partes
		h = (float)this->ClientRectangle.Height;
		w = (float)this->ClientRectangle.Width;
		a = 15;
		b = 20;
		x0 = w/2;

		y0 = h/2;
		r = h/8 ;
		//
		//TODO: Add the constructor code here
		//
	}

protected:
	/// <summary>
	/// Clean up any resources being used.
	/// </summary>
	~Form1()
	{
		if (components)
		{
			delete components;
		}
	}
private: System::Windows::Forms::Timer^  timer1;
protected:
private: System::ComponentModel::IContainer^  components;

private:
	/// <summary>
	/// Required designer variable.
	/// </summary>


#pragma region Windows Form Designer generated code
	/// <summary>
	/// Required method for Designer support - do not modify
	/// the contents of this method with the code editor.
	/// </summary>
	void InitializeComponent(void)
	{
		this->components = (gcnew System::ComponentModel::Container());
		this->timer1 = (gcnew System::Windows::Forms::Timer(this->components));
		this->SuspendLayout();
		//
		// timer1
		//
		this->timer1->Enabled = true;
		this->timer1->Tick += gcnew System::EventHandler(this, &Form1::timer1_Tick);
		//
		// Form1
		//
		this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
		this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
		this->ClientSize = System::Drawing::Size(685, 523);
		this->Name = L"Form1";
		this->Text = L"Form1";
		this->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &Form1::Form1_Paint);
		this->ResumeLayout(false);

	}
#pragma endregion


private: float h, w, x, y, a, b, x0, y0, r;
private: Int32 n,i;

private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e)
		 {
			 i++;
			 if (i==n)
			 {
				 i=0;
			 }
			 this->Invalidate();


		 }
private: System::Void Form1_Paint(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e)
		 {
			 Graphics^g = e->Graphics;
			 x = x0 + r*Math::Cos(2*Math::PI*i/n);
			 y = y0 - r*Math::Sin(2*Math::PI*i/n);
			 e->Graphics->FillEllipse(Drawing::Brushes::Red,x-a/2,y-b/2,a,b);
			 g->TranslateTransform(10+10*i,10+10*i);
			 g->RotateTransform(i*360/n);
			 g->FillRectangle(Drawing::Brushes::Red,10,10,25,45);
		 }
};
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Precisava mesmo de uma mãozinha neste projecto..se possivel dêem uma ajuda :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora