All pastes #622227 Raw Edit

Someone

public text v1 · immutable
·published 2007-07-16 19:00 UTC
rendered paste body
// /home/jason/Projects/DiffyGame2/Main.cs created with MonoDevelop
// User: jason at 8:33 PM 7/14/2007
//
// To change standard headers go to Edit->Preferences->Coding->Standard Headers
//
// project created on 7/14/2007 at 8:33 PM
using System;
using Gtk;
using Pango;
using System.Collections;

namespace DiffyGame2
{
	class MainClass
	{
		public static DiffySolve diffy_compute = new DiffySolve();
		public static WindowClass window = new WindowClass();
		
		public static void Main()
		{
			//god this is utterly useless... why oh why must I have you?
			//I hope you die... die die die die die			
		}
	}
	
	public class WindowClass
	{		
		public ArrayList entry_list = new ArrayList();
		public ArrayList label_list = new ArrayList();
		public ArrayList button_list = new ArrayList();
		public ArrayList buffer_list = new ArrayList();
		//public ScrolledWindow text_scroll = new ScrolledWindow();
		//public 
		//entry.Add(new Entry(5));
		
		public WindowClass()
		{
			//Start Up GTK
			Application.Init();
			
			//define our window
			Window win = new Window("Diffy Game");
			win.DeleteEvent += new DeleteEventHandler(delete_event);
			
			VBox main_box = new VBox();
			HBox text_box = new HBox();
			HBox button_box = new HBox();
			
			//top label
			Label top_label = new Label("Diffy Game");
			
			//add entry boxes to list
			for ( int i = 0; i < 4; i++ )
			{
				Entry entry = new Entry();
				entry_list.Add(entry);
			}
			
			//configure entry boxes
			foreach ( Entry i in entry_list )
			{
				i.MaxLength = 5;
				i.SetSizeRequest(60, 20);
				i.Text = "0";
				text_box.PackStart(i);
			}
			
			//create 4 labels
			for ( int i = 0; i < 4; i++ )
			{
				Label label = new Label("Num " + Convert.ToString(i+1) + ": ");
				label_list.Add(label);
			}
			
			foreach ( Label i in label_list )
			{
				text_box.PackStart(i);
			}
			
			//pack in labels every other, perhaps redundant 
			//but this seemed to be the only really clean way
			int num = 0;
			foreach ( Label i in label_list)
			{
				text_box.ReorderChild(i, num);
				num += 2;
			}
			
			//create text storage area
			Pango.FontDescription monoFont = new FontDescription();
			monoFont.Family = "monospace";
			
			ScrolledWindow text_scroll = new ScrolledWindow();
			
			TextView text_storage = new TextView();
			
			buffer_list.Add(text_storage);
			TextBuffer text_storage_buffer = text_storage.Buffer;
			
			text_storage.ModifyFont(monoFont);
			text_storage_buffer.Text = "Enter numbers and press compute...";
			text_storage.Editable = false;
			
			text_scroll.Add(text_storage);
			main_box.PackEnd(text_scroll);
			
			text_storage.Buffer.Changed += new EventHandler(scroll_bottom);
			
			//add buttons
			Button compute_button = new Button("Compute");
			compute_button.Clicked += new EventHandler(update_event);

			
			Button close_button = new Button("Close");
			close_button.Clicked += new EventHandler(close_event);
			
			Button clear_button = new Button("Clear");
			clear_button.Clicked += new EventHandler(clear_event);
			
			Button end_button = new Button("End");
			end_button.Clicked += new EventHandler(scroll_bottom);
			
			button_list.Add(compute_button);
			button_list.Add(clear_button);
			button_list.Add(end_button);
			button_list.Add(close_button);
			
			foreach ( Button i in button_list )
			{
				button_box.PackStart(i, true, false, 10);
			}
			
			
			//setup packing	
			main_box.PackStart(top_label, false, true, 15);
			main_box.PackStart(text_box, false, true, 5);
			main_box.PackStart(button_box, false, true, 5);
			win.Add(main_box);
			win.ShowAll();
			
			Application.Run();
		}
		
		public void delete_event(object obj, DeleteEventArgs args)
		{
			Application.Quit();
		}
		
		public void close_event(object obj, EventArgs args)
		{
			Application.Quit();
		}
		
		public void clear_event(object obj, EventArgs args)
		{
			foreach ( TextView i in buffer_list )
			{
				i.Buffer.Text = "Enter numbers and press compute...";
			}
		}
		
		public void update_event(object obj, EventArgs args)
		{
			int[] solution = MainClass.diffy_compute.diffyUpdate(entry_list);
			update_textarea();
			update_buttons(solution);
		}
		
		public void update_textarea()
		{
			int[] integers = new int[4];
			int num = 0;
			foreach ( Entry i in entry_list )
			{
				try
				{
					//make sure out integer is an integer
					integers[num]=Convert.ToInt32(i.Text);
					num++;
				}
				catch
				{
					//if its not, set it to zero
					integers[num]=0;
					num++;
				}
			}
			
			foreach ( TextView i in buffer_list )
			{
				
				string text = "\r";
				int zeroCount = 0;
				foreach ( Entry x in entry_list )
				{
					try
					{
						text += Convert.ToString(x.Text).PadRight(7);
						if ( Convert.ToInt32(x.Text) == 0 )
						{
							zeroCount++;
						}
						if ( zeroCount == 4 )
						{
							text = "\rZero Reached!!!";
						}
					}
					catch
					{
						text += "ERROR".PadRight(7) + "\r-------------------------";
						break;
					}
				}
				
				TextIter end = new TextIter();
				end = i.Buffer.EndIter;
				
				i.Buffer.Insert( end, text );
				
			}
			
		}
		
		public void scroll_bottom(object obj, EventArgs args)
		{
			foreach ( TextView i in buffer_list )
			{
				i.ScrollToMark( i.Buffer.CreateMark( "mark", i.Buffer.EndIter, false ), 0.0, false, 0.0, 0.0 );
			}
		}
		
		public void update_buttons(int[] integers)
		{
			int num = 0;
			foreach ( Entry i in entry_list )
			{
				i.Text = Convert.ToString(integers[num]);
				num++;
			}
			
			
		}
	}
	
	public class DiffySolve
	{
		public int[] diffyUpdate(ArrayList obj)
		{
			int[] integers = new int[4];
			int num = 0;
			foreach ( Entry i in obj )
			{
				try
				{
					integers[num]=Convert.ToInt32(i.Text);
					num++;
				}
				catch
				{
					integers[num]=0;
					num++;
				}
			}
			
			
			int[] solution = new int[4];
			for ( int i = 0; i < 4; i++ )
			{
				if ( i == 3 )
				{
					solution[i] = Math.Abs(integers[i] - integers[0]);
				}
				else
				{
					solution[i] = Math.Abs(integers[i] - integers[i+1]);
				}
			}
			return solution;
		}
	}
}