C++ gurus and learners, we program ourselves :P all work is CC licensed

Sunday, December 22

C++ geometry [for game projects and similar]

15:17 By

Hi.
 Let's just call it a graphics function blog thoe i just know 2 or 3 of them but they'll be enough for simple drawing.

 This will require gotoxy function which is mentioned in a blog from Umair Sajid. The recap is as follow:
________________________________________________________________
#include <iostream>
#include <windows.h>

void gotoxy ( int , int );       //prototype
{main function and stuff}
void gotoxy(int x,int y)       //header. with x and y as coordinates to where cursor goes
{
     HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
                                         //output handle to be defined for function
     COORD coordinates;
                                         //COORD is a data type of windows.h header to store 2D graphic position's                                                  coordinates.
     coordinates.X = x;
                                         //save x coordinate value into the COORD structure's data type
     coordinates.Y = y;
                                         //similarly for y axis coordinate
     SetConsoleCursorPosition( hOut , coordinates );
                                         //finaly the function which set's the position of the cursor that you
                                           gave
}
define it and then you are good to go for the graphics functions
=======================================================================
  1. Simple lines:
     To understand this, just look up to coordinates of a simple line:
They change in a simple manner:
x,y
x+1,y
x+2,y
x+3,y
x+4,y
x+5,y
Here is a more understandable form:
x,y
++x,y
++x,y
++x,y
++x,y
++x,y
so here is the functions:
________________________________________________________________________
1. Horizontal line:
void horizontal_line(int , int , int);
void horizontal_line(int x, int y, int size)
{
      for(int i=0;i<size;i++)
      {
            gotoxy(x,y);
            cout<<char(219);
            x++;
      }
}
2. Vertical line:
void vertical_line(int , int , int);
void vertical_line(int x, int y, int size)
{
      for(int i=0;i<size;i++)
      {
            gotoxy(x,y);
            cout<<char(219);

            y++;
      }
}
=======================================================================
 2. Simple squares:
void square(int , int , int , int);
void square( int x, int y, int width, int length )
{
       int t_x;
       for(int i=0;i<length;i++)
       {
              t_x=x;
              for(int j=0;j<width;j++)
             {
                     gotoxy(t_x,y);
                     cout<<char(219);
                     t_x++;
             }
              y++;
        }
}
=======================================================================
You can also use colours for making it better.
Errors in code are possible as i did'nt made it on compiler so don't think that it won't work. In case of any problem you can email me.
That's all. I hope this'll help ya with simple interfaces. I'll give other methods for circle, hollow square ( completely hollow ) when obviously i need to make them and use them :)
Asslam-o-Alalikum.

Saturday, December 14

Use of ascii characters to print table in console


A post on using ascii chart for printing a table in console
#include <iostream>
using namespace std;

int main() {
 char topLeftCorner = (char)201, bottomLeft = (char)200, topRight= (char)187;
 char bottomRight = (char)188, horizontal = (char)205, vertical = (char)186;

 cout<<topLeftCorner;

 for(int i=0; i<10;i++)
  cout<<horizontal;

 cout<<topRight<<endl;

 cout<<vertical;

 for(int i=0;i<10;i++)cout<<' ';

 cout<<vertical;
 cout<<endl<<bottomLeft;

 for(int i=0; i<10;i++)
  cout<<horizontal;

 cout<<bottomRight;

 //or you can use ascii character 219 for all of the purposes, it is very easy to use
 return 0;
}

Wednesday, December 11

sorting of character arrays based on first character only

18:50 By

A code for Sir Saeed

/**
 * code by http://CppQA.blogspot.com
 * sorting of character arrays based on first character only
 * C++
*/
#include <iostream>
#include <string.h>
using namespace std;

int main() {
 char countries[5][15] = {"Pakistan","India","Afghanistan","Iran","China"};
 for(int i=0;i<5;i++)
 {
  for(int j=0;j<5-1;j++)
  {
   if(countries[i][0] < countries[j][0])
   {//swaping
    char temp[15];
    strcpy(temp,countries[i]);
    strcpy(countries[i],countries[j]);
    strcpy(countries[j],temp);
   }
  }
 }
 
 //print
 for(int i=0;i<5;i++)cout<<countries[i]<<endl;
 return 0;
}

Sunday, December 8

Filing in C++

13:37 By

Its very irritating to input again and again and best way to avoid it is FILING and it is pretty simple :)

Code:

 #include<iostream.h>
 #include<conio.h>
 #include<fstream.h>
 void main(){

   char name[15];

//---------------- READING FROM  FILE ---------------

ifstream insertion("contries.txt");

cout<<"\t\tReading data from file contries.txt\n\n"<<endl;

   while(insertion>>name)
   {
    cout<<name<<endl;
   }

insertion.close();

//--------------- WRITING IN FILE ------------------

//to clear the data of "data.txt" so that new content overwrites the file

// if u want to append new data to previous file skip the following two lines

ofstream empty("data.txt");

empty.close();

 //writing new data in "data.txt"

cout<<"\t\tWriting following data in file data.txt\n\n"<<endl;

int copyng[]={1995,1996,1997,1998,1999,2000,0,8,7,6};
ofstream burr("data.txt",ios::app);

int n=sizeof(copyng)/sizeof(copyng[0]);     //to find out the size of array in terms of # of elements

   for(int i=0;i<n;i++)
   {
   cout<<copyng[i]<<endl;
   burr<<" "<<copyng[i]; }
   burr.close();
   cout<<"\n\t\tPress any key to exit"<<endl;
   getche();
   }





Note:
 Your .txt file should be in the same location as that of your .cpp file.

For More Info:

For more details and possible values of parameters visit the link below
http://www.cplusplus.com/doc/tutorial/files/
Include filing in your programs and ENJOY


Regards