Автор: Пользователь скрыл имя, 08 Апреля 2012 в 11:29, курсовая работа
Данная программа предназначена для шифрования файлов наложением кода ключа по методу XOR(исключающего или).
1.Программа шифрования текста методом наложения кода ключа…..стр.3
2.Графическое приложение: игра PacMan……………………………..стр.13
3.Клиент базы данных Microsoft Access……………………………….стр.26
Содержание
1.Программа шифрования текста методом наложения кода ключа…..стр.3
2.Графическое приложение: игра PacMan……………………………..стр.13
3.Клиент базы данных Microsoft Access……………………………….стр.26
Данная программа предназначена для шифрования файлов наложением кода ключа по методу XOR(исключающего или).
1.Главное меню
2.Поле ввода ключа для шифрования
3.Кнопка для шифрования
4.Кнопка для расшифровки
Результат работы программы:
Исходный текст:
Текст после шифрования ключем “key” :
Файл после расшифровки:
Основной алгоритм (шифрование и дешифрование текста)
Шифрование:
void __fastcall TForm1::Button3Click(TObject *Sender)
{
ifstream inp("Input.txt");
ofstream out("Output.txt");
Edit3->Enabled=false;;
if(!inp)
{
ShowMessage("Отсутствует входной файл!!!");
}
if (!Edit3->Text.Length())
{ ShowMessage("Введите ключ для шифрования!!!");
Edit3->Enabled=true;
}
else
kluch=Edit3->Text.c_str();
int n=strlen(kluch); //длина ключа
int b,j,i=0;
for(int k=0;k<n;k++)
{ //преобразование символов ключа в прописные
b=kluch[k];
if(b<=-33&&b>=-64)b+=32; //A->а,Б->б,...(русский алфавит)
if(b==-81||b==-88||b==-86)b+=
if(b<=90&&b>=65)b+=32; //A->a, B->b,...(английский )
kluch[k]=b;
}
char temp,buffer=NULL;//buffer-счит
while(!inp.eof()) //пока не достигнут конец файла
{
inp.read((char*)&buffer,
if(buffer==NULL)break;// если файл пустой
j=fmod(i,n); // переменная j циклически изменяется от 0 до n-1
temp=buffer^(kluch[j]+1);// применяем операцию "исключающее ИЛИ"
out.put(temp); //записываем кодированный символ
i++; //переходим к следующему символу ключевого слова
buffer=NULL;
}
inp.close();
out.close();
ShowMessage("Файл зашифрован");
}
Расшифровка
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ifstream inp("Output.txt");
ofstream out("Uncrypted.txt");
if(!inp)
{
ShowMessage("Отсутствует входной файл!!!");
}
if (!Edit3->Text.Length())
{ ShowMessage("Введите ключ для дешифрования!!!");
Edit3->Enabled=true;
}
int b,j,i=0;
int n=strlen(kluch);
for(int k=0;k<n;k++)
{ //преобразование символов ключа в прописные
b=kluch[k];
if(b<=-33&&b>=-64)b+=32; //A->а,Б->б,...(русский алфавит)
if(b==-81||b==-88||b==-86)b+=
if(b<=90&&b>=65)b+=32; //A->a, B->b,...(английский )
kluch[k]=b;
}
char temp,buffer=NULL;
while(!inp.eof())
{
inp.read((char*)&buffer,
if(buffer==NULL)break;
j=fmod(i,n);
temp=buffer^(kluch[j]+1);
out.write((char*)&temp,sizeof(
i++;
buffer=NULL;
}
inp.close();
out.close();
ShowMessage("Файл расшифрован");
}
Игра «PacMan»
Интерфейс программы
1.Главное меню
2.Статусная строка
3.Игровое поле
Правила Игры
Правила игры в PacMan достаточно просты и понятны. Существует лабиринт, по которому ходят враги – приведения. Цель игры набрать максимальное количество очков за минимальное время и не быть съеденным приведением.
Текст программы
//----------------------------
#include <vcl.h>
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <math.h>
#include <mmsystem.hpp>
#pragma hdrstop
#include "Unit1.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------
//для работы с картой
const byte Height = 12;
const byte Width = 12;
const int CellSize = 25;
const int constMaxWay = CellSize / 3;
const byte mpNone = 0;
const byte mpSeed = 1;
const byte mpEnergizer = 2;
const byte mpPacmanStart = 4;
const int dx[4] = {1, 0, -1, 0}; // смещения, чтобы определить
const int dy[4] = {0, -1, 0, 1}; // какую стену разбивать в BreakWall
//для звуков
TMediaPlayer *MediaPlayer[10];
const byte sMove = 0;
const byte sEatSeed = 1;
const byte sEatEnergizer = 2;
const byte sShowBonus = 3;
const byte sEatBonus = 4;
const byte sEatGhost = 5;
const byte sDie = 6;
const byte sLoose = 7;
const byte sWin = 8;
const byte sNextLevel = 9;
//---------------------ПЕРЕМЕН
int N = 0;
int p_Life=3;
int LevelSeed = 0;
int LevelEnergizer = 0;
int Score = 0;
//для графики
Graphics::TBitmap* ImageBuffer; // буфер (все в него перед выводом на форму)
Graphics::TBitmap* ImageSprites; //картинка со спрайтами
Graphics::TBitmap* ImageBack; //фон + лабиринт + неизменяемые элементы
//----------------------------
struct Location
{
byte left_wall; //флаг наличия у данной локации левой и верхней стен
byte up_wall; //правая и нижняя вычисляются через соседние локации
int attr; //Outside = 0, Inside = 1, Border = 2.
int mark; // хранят N при волновой трассировке
int map; // карта
} Maze[Height+1][Width+1];
// +1 чтобы у ряда [Height][] была нижняя стена, а у [][Width] правая
//----------------------------
class TBonus
{
public:
int Kind; // вид бонуса
int Time; // время до появления следующего
int Life; // время "жизни" бонуса
void Show()
{
if (Kind == 0)
{
switch (random(10)) {
case 0: case 1: case 2: case 3: Kind = 4; break; // 40%
case 4: case 7: case 8: Kind = 3; break; // 30%
case 5: case 6: Kind = 2; break; // 20%
case 9: Kind = 1; break; // 10%
}
Time = (5 + random(10)) * 100;
}
else Time--;
if ((Kind >= 0) && (Time == 0))
{
MediaPlayer[sShowBonus]->Play(
Life = 1000;
}
if (Life != 0)
{
Form1->Sprites->Draw(
Life--;
if (Life == 0) Kind = 0;
}
}
} Bonus;
//----------------------------
class TPacman
{
public:
int X;
int Y;
int StartX;
int StartY;
int Dir;
int NewDir;
int SpriteNum;
bool Active;
int ActiveTime;
bool DirFlag[3];
void VerifyDir()
{
if (Maze[X/CellSize][Y/CellSize].
else DirFlag[0] = true;
if (Maze[X/CellSize][Y/CellSize].
else DirFlag[1] = true;
if (Maze[X/CellSize + 1][Y/CellSize].left_wall == '1') DirFlag[2] = false;
else DirFlag[2] = true;
if (Maze[X/CellSize][Y/CellSize + 1].up_wall == '1') DirFlag[3] = false;
else DirFlag[3] = true;
}
void Go()
{
Form1->Sprites->Draw(
if ((X % CellSize == 0) && (Y % CellSize == 0))
{
Dir = NewDir;
if (Maze[X/CellSize][Y/CellSize].
switch (Maze[X/CellSize][Y/CellSize].
case mpSeed : MediaPlayer[sEatSeed]->Play();
case mpEnergizer : MediaPlayer[sEatEnergizer]->