Compare commits
5 Commits
03ac04c0ff
...
e911510523
Author | SHA1 | Date | |
---|---|---|---|
|
e911510523 | ||
|
ff499e51d8 | ||
|
50e86d6ed5 | ||
|
bbad0349e4 | ||
|
c26dc8415d |
@ -9,6 +9,7 @@
|
|||||||
#include "Aufg6/MineSweeper.h"
|
#include "Aufg6/MineSweeper.h"
|
||||||
#include "Aufg7/SegFault.h"
|
#include "Aufg7/SegFault.h"
|
||||||
#include "Aufg8/SalesStatMain.h"
|
#include "Aufg8/SalesStatMain.h"
|
||||||
|
#include "Aufg9/DiabloByteReader.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
// Aufg1Main();
|
// Aufg1Main();
|
||||||
@ -18,5 +19,6 @@ int main() {
|
|||||||
// Aufg5Main();
|
// Aufg5Main();
|
||||||
// Aufg6Main();
|
// Aufg6Main();
|
||||||
// Aufg7Main();
|
// Aufg7Main();
|
||||||
Aufg8Main();
|
// Aufg8Main();
|
||||||
|
Aufg9Main();
|
||||||
}
|
}
|
||||||
|
50
Aufg9/DiabloByteReader.cpp
Normal file
50
Aufg9/DiabloByteReader.cpp
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
template <typename typ1>
|
||||||
|
typ1 readFromStream(std::ifstream &stream, char *dest) {
|
||||||
|
if (stream.is_open()) {
|
||||||
|
stream.read(dest, sizeof(char[1024]));
|
||||||
|
typ1 *ptr = reinterpret_cast<typ1 *>(dest);
|
||||||
|
return std::move(*ptr);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
std::runtime_error("Could not read from File!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Aufg9Main() {
|
||||||
|
char *dest = new char[1024];
|
||||||
|
|
||||||
|
try {
|
||||||
|
std::string fileName = "../Aufg9/IO-Files/charakter.d2s";
|
||||||
|
std::ifstream stream(fileName);
|
||||||
|
readFromStream<long>(stream, dest);
|
||||||
|
|
||||||
|
// Name
|
||||||
|
char *byte20 = &dest[20];
|
||||||
|
std::cout << "Name: ";
|
||||||
|
for (int i = 0; i < 16; i++) {
|
||||||
|
// std::cout << byte20[i];
|
||||||
|
std::cout << dest[20 + i];
|
||||||
|
}
|
||||||
|
std::cout << std::endl;
|
||||||
|
|
||||||
|
// Status
|
||||||
|
char* byte36 = &dest[36];
|
||||||
|
std::cout << "Status: " << (((int)(*byte36))%8)/4 << std::endl; // geh zu Byte 36, lies genau 1 byte, interpretiere es als int, berechne mod 8 -> wegwerfen der linken Bits, /4 -> wegwerfen der rechten beiden Bits -> Tada, nur das 3. Bit von Rechts bleibt übrig
|
||||||
|
// 0 -> Player is not HardCore?
|
||||||
|
|
||||||
|
// Klasse
|
||||||
|
bool *byte40 = (bool*) &dest[40];
|
||||||
|
std::cout << "Klasse: " << byte40[0] << std::endl;
|
||||||
|
// 2 -> Necromancer
|
||||||
|
|
||||||
|
// Level
|
||||||
|
bool *byte43 = (bool*) &dest[43];
|
||||||
|
std::cout << "Level: " << byte43[0] << std::endl;
|
||||||
|
|
||||||
|
} catch (const std::exception &e) {
|
||||||
|
std::cout << e.what() << std::endl;
|
||||||
|
}
|
||||||
|
}
|
11
Aufg9/DiabloByteReader.h
Normal file
11
Aufg9/DiabloByteReader.h
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
//
|
||||||
|
// Created by DH10MBO on 11.12.2024.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef DIABLOBYTEREADER_H
|
||||||
|
#define DIABLOBYTEREADER_H
|
||||||
|
|
||||||
|
void Aufg9Main();
|
||||||
|
|
||||||
|
|
||||||
|
#endif //DIABLOBYTEREADER_H
|
Loading…
Reference in New Issue
Block a user