Grid of Clickable buttons

I'm trying to write a GUI for a battleship game for class and am running into problems with the Win API and such for C++ on Visual Studio 2010.

My issues:
1) I pass in 2 vectors and an int. ie. - DrawBoard(int xsize, vector<char> ShotBrd, vector<char> ShipBrd)

"Shotbrd" contains the cells where I've fired, and whether they were "hit" or "miss"
"Shipbrd" contains the cells where my ships are.
"xsize" is the integer size of each row.

In the console version, I used a for() loop and cout<< to display a grid.

1
2
3
4
5
6
7
8
9
10
11
int i=0
for (int y=0;y<ysize;y++)
{
	for(int x=0;x<xsize;x++)
	{
		i=(y*xsize)+x
		cout<<Shotbrd[i];
		
	}
	cout<<endl;
}


and this would display something similar to:


~~~~~~*~~
*~*~~~*~~
*x*~~~~~~
~~~~~~~~~
~~~~~~~~~


with the ~ being waves/unshot areas, * being shot but misses, and x being hits.

I need to translate this to Blue buttons for waves, Red buttons for hits, and Grey buttons for misses.

A similar setup is setup for the "ShipBrd".

2) I need the Shotboard buttons to return their position when clicked. I was able to do this with a single button, but with an array of dynamically created buttons was a little harder...
Last edited on
SO, how did you try to use your buttons?
Visual Studios form generation was my starting from, so:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#pragma once

namespace FramesTest {

	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
	/// </summary>
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: Add the constructor code here
			//

		}

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

	private:
		/// <summary>
		/// Required designer variable.
		/// </summary>
		System::ComponentModel::Container ^components;

#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->button1 = (gcnew System::Windows::Forms::Button());
			this->SuspendLayout();
			// 
			// button1
			// 
			this->button1->Location = System::Drawing::Point(42, 62);
			this->button1->Name = L"button1";
			this->button1->Size = System::Drawing::Size(22, 22);
			this->button1->TabIndex = 0;
			this->button1->Text = L"button1";
			this->button1->UseVisualStyleBackColor = true;
			// 
			// Form1
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->AutoScroll = true;
			this->ClientSize = System::Drawing::Size(284, 262);
			this->Controls->Add(this->button1);
			this->Name = L"Form1";
			this->Text = L"Form1";
			this->ResumeLayout(false);

		}
#pragma endregion
	};
}


This is what I have and I really don't know where else to go from here...

Topic archived. No new replies allowed.