Click here to Skip to main content
15,892,965 members
Home / Discussions / Managed C++/CLI
   

Managed C++/CLI

 
GeneralRe: Any update on Intellisense for C++/CLI in VS2010 Pin
T21026-Apr-11 17:29
T21026-Apr-11 17:29 
QuestionAnimating a snake (aka Snafu) [modified] Pin
Cyclone_S25-Mar-11 14:20
Cyclone_S25-Mar-11 14:20 
AnswerRe: Animating a snake (aka Snafu) Pin
Richard Andrew x6425-Mar-11 14:40
professionalRichard Andrew x6425-Mar-11 14:40 
GeneralRe: Animating a snake (aka Snafu) Pin
Cyclone_S25-Mar-11 14:54
Cyclone_S25-Mar-11 14:54 
GeneralRe: Animating a snake (aka Snafu) Pin
Richard Andrew x6425-Mar-11 14:57
professionalRichard Andrew x6425-Mar-11 14:57 
GeneralRe: Animating a snake (aka Snafu) Pin
Cyclone_S26-Mar-11 13:09
Cyclone_S26-Mar-11 13:09 
GeneralRe: Animating a snake (aka Snafu) Pin
Richard Andrew x6426-Mar-11 13:50
professionalRichard Andrew x6426-Mar-11 13:50 
GeneralRe: Animating a snake (aka Snafu) Pin
Cyclone_S27-Mar-11 13:27
Cyclone_S27-Mar-11 13:27 
Thanks for the helpful suggestions. I got it to move the snake right fine but I need help with some of the coding to get it to move properly in the other directions. I'm curently trying to move the snake downwards but I'm stuck. Thanks.

#include "stdafx.h"
using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;
using namespace System::Collections::Generic; // Required to make lists.

public ref class snake_segment
{
	public:
			Panel^ panel;

			snake_segment( Form ^ form ) // Class Constructor.
			{ 
				panel = gcnew Panel();
				panel->BackColor = Color::Blue;
				panel->Width = 20; panel->Height = 20;
				form->Controls->Add(panel);
			}
};

public ref class Form1 : public Form 
{
	public:
			List<snake_segment^>^ segments; // A list that contains the snake segments.
			int l; // Length of the snake at begining of game.
			int size; // The number of segments in snake/list.
			int last;  // The last segment of in the snake.
			int x, y; // The coordinates of the snake segment(head).
			int x2,y2; // Values that will store the direction the snake will move.
			Timer^ Timer1; // The timer that will move the snake;
			bool game_started;

			Form1() // Class constructor.
			{	
				segments = gcnew List<snake_segment^>();
				Timer1 = gcnew Timer();
				Timer1->Interval = 2000;
				Timer1->Start();
				Timer1->Tick += gcnew System::EventHandler(this, &Form1::timer1_Tick);
				this->KeyDown += gcnew System::Windows::Forms::KeyEventHandler(this, &Form1::Form_KeyDown);
				Make_Snake();
			}
			
			void Make_Snake()
			{
				double clr = 255;
				double dclr = 128 / 2;

				for(int I = 0; I <= 3; I++)
				{
					snake_segment^ s = gcnew snake_segment(this);
					s->panel->BackColor = Color::FromArgb(0,0,clr);
					segments->Add(s);
					clr -= dclr;
				}

				for each (snake_segment^ s in segments)
				{
					l += s->panel->Width + 2;
					s->panel->Left = l;
				}	
			}

			void get_size_of_snake()
			{
				size=0;
				for each (snake_segment^ s in segments)
				{
					size++;	
				}				
			}

			void head_position() // The head position at start of game.
			{
				x = segments[size-1]->panel->Left;
				y = segments[size-1]->panel->Top;
			}

			void move_snake()
			{
				if(x2 ==1){segments[last]->panel->Left = x + segments[last]->panel->Width + 2;} // Move snake right.
				if(y2 == -1){segments[last]->panel->Left = x;segments[last]->panel->Top = x;} // Move snake down.
				x = segments[last]->panel->Left;
				y = segments[last]->panel->Top;
				last++;
				if(last >= size){last=0;}
			}

			System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) // A timer that will move the snake;
			{
				get_size_of_snake();
				if(!game_started){head_position();game_started=true;} // Find first head position at start of game.
				move_snake();
			}

			System::Void Form_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e)
			{
				if(e->KeyCode == Keys::Down){y2 = -1;}
				if(e->KeyCode == Keys::Up){y2 = 1;}
				if(e->KeyCode == Keys::Left){x2 = -1;}
				if(e->KeyCode == Keys::Right){x2 = 1;}
			}
};

[STAThread]
int main()
{
    Application::Run(gcnew Form1());
}

GeneralRe: Animating a snake (aka Snafu) Pin
Richard Andrew x6427-Mar-11 14:12
professionalRichard Andrew x6427-Mar-11 14:12 
GeneralRe: Animating a snake (aka Snafu) Pin
Cyclone_S27-Mar-11 14:25
Cyclone_S27-Mar-11 14:25 
GeneralRe: Animating a snake (aka Snafu) Pin
Richard Andrew x6427-Mar-11 15:24
professionalRichard Andrew x6427-Mar-11 15:24 
GeneralRe: Animating a snake (aka Snafu) Pin
Cyclone_S28-Mar-11 13:21
Cyclone_S28-Mar-11 13:21 
GeneralRe: Animating a snake (aka Snafu) Pin
Cyclone_S30-Mar-11 13:22
Cyclone_S30-Mar-11 13:22 
GeneralRe: Animating a snake (aka Snafu) Pin
Richard Andrew x6430-Mar-11 14:41
professionalRichard Andrew x6430-Mar-11 14:41 
GeneralRe: Animating a snake (aka Snafu) Pin
Cyclone_S31-Mar-11 9:14
Cyclone_S31-Mar-11 9:14 
GeneralRe: Animating a snake (aka Snafu) Pin
Cyclone_S16-Apr-11 8:44
Cyclone_S16-Apr-11 8:44 
Questionissue while loading MFC extension dll dynamically Pin
ptr_Electron24-Mar-11 23:37
ptr_Electron24-Mar-11 23:37 
AnswerRe: issue while loading MFC extension dll dynamically Pin
Richard MacCutchan25-Mar-11 0:02
mveRichard MacCutchan25-Mar-11 0:02 
GeneralRe: issue while loading MFC extension dll dynamically Pin
ptr_Electron25-Mar-11 0:21
ptr_Electron25-Mar-11 0:21 
GeneralRe: issue while loading MFC extension dll dynamically Pin
Richard MacCutchan25-Mar-11 1:03
mveRichard MacCutchan25-Mar-11 1:03 
GeneralRe: issue while loading MFC extension dll dynamically Pin
ptr_Electron25-Mar-11 2:50
ptr_Electron25-Mar-11 2:50 
GeneralRe: issue while loading MFC extension dll dynamically Pin
Richard MacCutchan25-Mar-11 4:24
mveRichard MacCutchan25-Mar-11 4:24 
QuestionInstances of an object Pin
Cyclone_S19-Mar-11 15:47
Cyclone_S19-Mar-11 15:47 
AnswerRe: Instances of an object Pin
John Schroedl19-Mar-11 17:51
professionalJohn Schroedl19-Mar-11 17:51 
GeneralRe: Instances of an object Pin
John Schroedl19-Mar-11 18:01
professionalJohn Schroedl19-Mar-11 18:01 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.