Introduction to 2D Linux Game Programming/Algorithms/Simple Software Transformations/The Helper Functions

From Wikibooks, open books for an open world
Jump to navigation Jump to search

The Helper Functions[edit | edit source]

Rather than writing a function to print the 2D array of integers for every one of these simple examples, or manually ask for and validate input, these helper functions do the work for us. It also keeps the code cleaner, keeping the printing away from the algorithm we're showing.

The Source:[edit | edit source]

// S.cpp
// Static Functions
#include "include/S.h"
#include <iostream>
using namespace std;

void S::print_rect(int width, int height, int *image)
{
        for(int x = 0; x < width*height; x++)
        {
                cout << image[x];

                if((x+1) % width != 0)
                        cout << ",";
                else
                        cout << "\n";
        }
}

int S::sw()
{
        int width;

        cout << "\nEnter a value between 1 and 10 for the width: ";
        cin >> width;
        if(width > 10 || width < 1)
        {
                cout << "\nOut of Range!\n\n";
                return 0;
        }

        return width;
}

int S::sh(int width)
{
	int height;

	// keeps the image from having 2 characters
	if(width > 6)
	{
		cout << "\nWidth > 6, height set to 1";
		height = 1;
	}
	else if(width == 5 || width == 4)
	{
		cout << "\nEnter a height between 1 and 2 for height: ";
		cin >> height;
		if(height < 1 || height > 2)
		{
			cout << "\nOut of Range!\n";
			return 0;
		}
	}
	else if(width == 3)
	{
		cout << "\nEnter a height between 1 and 3 for height: ";
		cin >> height;
		if(height > 3 || height < 1)
		{
			cout << "\nOut of Range!\n";
			return 0;
		}
	}
	else if(width == 2)
	{
		cout << "\nEnter a height between 1 and 5 for height: ";
		cin >> height;
		if(height > 5 || height < 1)
		{
			cout << "\nOut of Range!\n";
			return 0;
		}
	}
	else
	{
		cout << "\nEnter a height between 1 and 10 for height: ";
		cin >> height;
		if(height > 10 || height < 1)
		{
			cout << "\nOut of Range!\n";
			return 0;
		}
	}

	return height;
}

int S::ss(int width)
{
	int scale;

	switch(width)
	{
		case 10 :
		case 9 :
	                cout << "\nEnter a value to scale the image between 1 and 4: ";
			cin >> scale;
			if (scale < 1 || scale > 4)
			{
				cout << "\nOut of Range!\n";
				return 0;
			}
			break;

		case 8 :
		case 7 :
			cout << "\nEnter a value to scale the image between 1 and 5: ";
			cin >> scale;
			if (scale < 1 || scale > 5)
			{
				cout << "\nOut of Range!\n";
				return 0;
			}
			break;

		case 6 :
			cout << "\nEnter a value to scale the image between 1 and 6: ";
			cin >> scale;
			if (scale < 1 || scale > 6)
			{
				cout << "\nOut of Range!\n";
				return 0;
			}
			break;
		case 5 :
			cout << "\nEnter a value to scale the image between 1 and 8: ";
			cin >> scale;
			if (scale < 1 || scale > 8)
			{
				cout << "\nOut of Range!\n";
				return 0;
			}
			break;

		case 4 :
			cout << "\nEnter a value to scale the image between 1 and 10: ";
			cin >> scale;
			if (scale < 1 || scale > 10)
			{
				cout << "\nOut of Range!\n";
				return 0;
			}
			break;

		case 3 :
			cout << "\nEnter a value to scale the image between 1 and 13: ";
			cin >> scale;
			if (scale < 1 || scale > 13)
			{
				cout << "\nOut of Range!\n";
				return 0;
			}
			break;

		case 2 :
			cout << "\nEnter a value to scale the image between 1 and 20: ";
			cin >> scale;
			if (scale < 1 || scale > 20)
			{
				cout << "\nOut of Range!\n";
				return 0;
			}
			break;

		case 1 :
			cout << "\nEnter a value to scale the image between 1 and 80: ";
			cin >> scale;
			if (scale < 1 || scale > 80)
			{
				cout << "\nOut of Range!\n";
				return 0;
			}
			break;

		default : break;
	}

	return scale;
}