Fixed cached loop

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
master
parent 75bcb43962
commit d8bb3d6dd9
  1. 34
      ChallengeLeaguePointSolver/C++/scripts/build.sh
  2. 21
      ChallengeLeaguePointSolver/C++/scripts/commit.sh
  3. 22
      ChallengeLeaguePointSolver/C++/scripts/debug.sh
  4. 7
      ChallengeLeaguePointSolver/C++/scripts/filelist
  5. 14
      ChallengeLeaguePointSolver/C++/scripts/lines.sh
  6. 7
      ChallengeLeaguePointSolver/C++/scripts/md5
  7. 20
      ChallengeLeaguePointSolver/C++/scripts/release.sh
  8. 0
      ChallengeLeaguePointSolver/C++/scripts/temp
  9. 46
      ChallengeLeaguePointSolver/C++/scripts/web.sh
  10. BIN
      ChallengeLeaguePointSolver/C++ProjectTemplate
  11. 75
      ChallengeLeaguePointSolver/C++ProjectTemplate.html
  12. 1
      ChallengeLeaguePointSolver/C++ProjectTemplate.js
  13. BIN
      ChallengeLeaguePointSolver/C++ProjectTemplate.wasm
  14. 26
      ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.cpp
  15. 33
      ChallengeLeaguePointSolver/README.md
  16. BIN
      ChallengeLeaguePointSolver/a.out
  17. 75
      ChallengeLeaguePointSolver/buildtemplate.html
  18. BIN
      ChallengeLeaguePointSolver/dirtblock.png
  19. 211
      ChallengeLeaguePointSolver/main.cpp
  20. 2
      ChallengeLeaguePointSolver/pixelGameEngine.cpp
  21. 6711
      ChallengeLeaguePointSolver/pixelGameEngine.h
  22. BIN
      ChallengeLeaguePointSolver/pixelGameEngine.o
  23. BIN
      ChallengeLeaguePointSolver/pixelGameEngine_wasm.o
  24. 10
      ChallengeLeaguePointSolver/sig
  25. 1
      ChallengeLeaguePointSolver/utils/.coauthors
  26. 5
      ChallengeLeaguePointSolver/utils/.updateDirectories
  27. 26
      ChallengeLeaguePointSolver/utils/define.sh
  28. 5
      ChallengeLeaguePointSolver/utils/filelist
  29. 28
      ChallengeLeaguePointSolver/utils/main.sh
  30. 4
      ChallengeLeaguePointSolver/utils/md5
  31. 103
      ChallengeLeaguePointSolver/utils/search.sh

@ -0,0 +1,34 @@
#Compiles the entire program then runs it, producing an executable. If the "test" argument is included, will try and run tests too (in the test folder). If the "full" argument is included, it will recopmile the PixelGameEngine (should it change)
#C++
printf "Running program...\n\n\n"
output=$(dpkg -l | grep libx11-dev)
if [[ -z $output ]]
then
sudo apt install libx11-dev libpulse-dev mesa-common-dev libpng-dev libstdc++-12-dev
fi
if [ ! -f "pixelGameEngine.o" ]
then
printf "Pixel Game Engine compile object missing. Compiling for the first time..."
g++ -c pixelGameEngine.cpp
fi
if [ "$1" = "test" ]
then
printf "Running tests...\n"
echo "#define TEST_SUITE" > ./test/test.h
if g++ $(find . -type f -name "*.cpp" -not -name "pixelGameEngine.cpp") pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then
./${PROJECT_NAME} "$@"
fi
elif [ "$1" = "full" ]
then
echo "" > ./test/test.h
g++ -c pixelGameEngine.cpp
if g++ $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then
./${PROJECT_NAME} "$@"
fi
else
echo "" > ./test/test.h
if g++ $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then
./${PROJECT_NAME} "$@"
fi
fi
printf "\n\n"

@ -0,0 +1,21 @@
#Adds a commit message and pushes project to github repository.
#C++
COMMIT_MESSAGE="$*"
FIRST_LINE=true
while IFS= read -r line
do
if [ "$FIRST_LINE" = true ]; then
COMMIT_MESSAGE+="
Co-authored-by: $line"
FIRST_LINE=false
else
COMMIT_MESSAGE+="
Co-authored-by: $line"
fi
done < utils/.coauthors
git config --global credential.helper store
git add -u
git add *
git commit -m "$COMMIT_MESSAGE"
git push

@ -0,0 +1,22 @@
#Compiles the entire program with debug flags then runs it in gdb. If the "test" argument is included, will try and run tests too (in the test folder)
#C++
printf "Running program...\n\n\n"
output=$(dpkg -l | grep libx11-dev)
if [[ -z $output ]]
then
sudo apt install libx11-dev libpulse-dev mesa-common-dev libpng-dev libstdc++-12-dev
fi
if [ "$1" = "test" ]
then
printf "Running tests...\n"
echo "#define TEST_SUITE" > ./test/test.h
if g++ $(find . -type f -name "*.cpp") -g ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then
gdb ./${PROJECT_NAME} "$@"
fi
else
echo "" > ./test/test.h
if g++ $(find . -type f -name "*.cpp" -not -path "./test/*") -g ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then
gdb ./${PROJECT_NAME} "$@"
fi
fi
printf "\n\n"

@ -0,0 +1,7 @@
build.sh
commit.sh
debug.sh
lines.sh
release.sh
temp
web.sh

@ -0,0 +1,14 @@
#Returns the line counts of your project.
#C++
shopt -s extglob
ls -1 @(*.h|*.cpp) > temp
while read a; do
if [ "$a" != "pixelGameEngine.h" ] && [ "$a" != "soundwaveEngine.h" ] && [ "$a" != "splash.h" ];
then
echo -e "$a\n" >> temp2
fi
done < temp
wc -l $(cat temp2)
rm temp
rm temp2

@ -0,0 +1,7 @@
build.sh:c073187e65d0e23aa77aa94af4ec6382 -
commit.sh:1af81bf417dfb932284d8a14fdd10657 -
debug.sh:8125f303032b6cbc137223df63d10096 -
lines.sh:3b907786f7fc9204025993016c9080de -
release.sh:b1ce8461a303e8e7aa9ed74259db3873 -
temp:d41d8cd98f00b204e9800998ecf8427e -
web.sh:cd3b8a99e208244dee7576bc23c0dc80 -

@ -0,0 +1,20 @@
#Creates a release build that focuses on high runtime performance. Use "full" argument to completely rebuild PGE.
#C++
printf "Running program...\n\n\n"
output=$(dpkg -l | grep libx11-dev)
if [[ -z $output ]]
then
sudo apt install libx11-dev libpulse-dev mesa-common-dev libpng-dev libstdc++-12-dev
fi
if [ "$1" == "full" ]; then
rm "pixelGameEngine.o"
fi
if [ ! -f "pixelGameEngine.o" ]
then
printf "Pixel Game Engine compile object missing. Compiling for the first time..."
g++ -c pixelGameEngine.cpp
fi
if g++ $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then
./${PROJECT_NAME} "$@"
fi
printf "\n\n"

@ -0,0 +1,46 @@
#Compiles emscripten instance of this project for the web. Use "full" argument if your PGE has to be completely rebuilt. Use "headless" argument for a headless version.
#C++
output=$(dpkg -l | grep libx11-dev)
if [[ -z $output ]]
then
sudo apt install libx11-dev libpulse-dev mesa-common-dev libpng-dev libstdc++-12-dev
fi
if [[ "$1" == "full" || "$2" == "full" ]]; then
rm "pixelGameEngine_wasm.o"
fi
source ../emsdk/emsdk_env.sh
if [ ! -f "pixelGameEngine_wasm.o" ]
then
printf "Pixel Game Engine compile object missing. Compiling for the first time..."
em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 -c pixelGameEngine.cpp -o pixelGameEngine_wasm.o
fi
if [ -d "assets" ]; then
em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine_wasm.o -o ${PROJECT_NAME}.html --preload-file ./assets
else
em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine_wasm.o -o ${PROJECT_NAME}.html
fi
cp buildtemplate.html ${PROJECT_NAME}.html
sed -i "s/_REPLACEME_/$PROJECT_NAME.js/" ${PROJECT_NAME}.html
if [[ "$1" == "headless" || "$2" == "headless" ]]; then
echo "Running as headless web server"
emrun --no_browser ${PROJECT_NAME}.html
else
emrun --serve_after_close ${PROJECT_NAME}.html
fi
if [ $? -eq 127 ]
then
echo "Failed to find Emscripten. Running install script."
PWD=$(pwd)
cd ..
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
git pull
./emsdk install latest
./emsdk activate latest
source ./emsdk_env.sh
cd $PWD
echo "Emscripten has been installed. Try running the command again."
fi

@ -0,0 +1,75 @@
<!doctype html>
<html lang="en-us">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Emscripten-Generated Code</title>
<style>
html,body { width: 100%; height: 100%; }
body { font-family: arial; margin: 0; padding: 0; background: #000; }
.emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; }
div.emscripten_border { border: none; }
/* the canvas *must not* have any border or padding, or mouse coords will be wrong */
canvas.emscripten { border: 0px none; background-color: black; }
</style>
</head>
<body>
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" tabindex=-1></canvas>
<script type='text/javascript'>
var Module = {
preRun: [],
postRun: [],
canvas: (function() {
var canvas = document.getElementById('canvas');
// As a default initial behavior, pop up an alert when webgl context is lost. To make your
// application robust, you may want to override this behavior before shipping!
// See http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15.2
canvas.addEventListener("webglcontextlost", function(e) { alert('WebGL context lost. You will need to reload the page.'); e.preventDefault(); }, false);
return canvas;
})(),
};
</script>
<script async type="text/javascript" src="C++ProjectTemplate.js"></script>
<script type="text/javascript">
Module.canvas.addEventListener("resize", (e) => {
var viewWidth = e.detail.width;
var viewHeight = e.detail.width / Module._olc_WindowAspectRatio;
if(viewHeight > e.detail.height)
{
viewHeight = e.detail.height;
viewWidth = e.detail.height * Module._olc_WindowAspectRatio;
}
// update dom attributes
Module.canvas.setAttribute("width", viewWidth);
Module.canvas.setAttribute("height", viewHeight);
var top = (e.detail.height - viewHeight) / 2;
var left = (e.detail.width - viewWidth) / 2;
// update styles
Module.canvas.style.position = "fixed";
Module.canvas.style.top = top.toString() + "px";
Module.canvas.style.left = left.toString() + "px";
Module.canvas.style.width = "";
Module.canvas.style.height = "";
// trigger PGE update
Module._olc_PGE_UpdateWindowSize(viewWidth, viewHeight);
// ensure canvas has focus
Module.canvas.focus();
e.preventDefault();
});
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

@ -49,7 +49,7 @@ struct SongCombinations{
int main(){
std::vector<ScoreData>dataA,dataB;
std::vector<std::pair<int,int>>player1Score,player2Score,player3Score;
std::ifstream file("team2.csv");
std::ifstream file("team2");
std::string line;
//First two lines are garbage data.
std::getline(file,line);
@ -64,10 +64,10 @@ int main(){
stoi(GetNext(marker,line)),
stoi(GetNext(marker,line)),
stoi(GetNext(marker,line))};
player1Score.emplace_back(std::pair<int,int>{dat.ex1,0});
player2Score.emplace_back(std::pair<int,int>{dat.ex2,0});
player3Score.emplace_back(std::pair<int,int>{dat.ex3,0});
dataA.emplace_back(dat);
player1Score.push_back(std::pair<int,int>{dat.ex1,0});
player2Score.push_back(std::pair<int,int>{dat.ex2,0});
player3Score.push_back(std::pair<int,int>{dat.ex3,0});
dataA.push_back(dat);
}
//Two more lines of garbage data.
std::getline(file,line);
@ -85,7 +85,7 @@ int main(){
player1Score[i].second=dat.ex1;
player2Score[i].second=dat.ex2;
player3Score[i].second=dat.ex3;
dataB.emplace_back(dat);
dataB.push_back(dat);
}
std::cout<<"File Contents:"<<std::endl<<std::endl;
for(auto&list:{dataA,dataB}){
@ -100,7 +100,7 @@ int main(){
for(int j=0;j<5;j++){
for(int k=0;k<5;k++){
if(i+j+k==6){
cases.emplace_back(TestCase{i,j,k});
cases.push_back(TestCase{i,j,k});
}
}
}
@ -110,19 +110,19 @@ int main(){
if(combinations.remainingA>0&&combinations.p1Picked.count(index)==0&&combinations.p2Picked.count(index)==0&&combinations.p3Picked.count(index)==0){
combinations.remainingA--;
combinations.totalEX+=dat[index].ex1;
combinations.p1.emplace_back(std::pair<int,int>{index,dat[index].ex1});
combinations.p1.push_back(std::pair<int,int>{index,dat[index].ex1});
combinations.p1Picked.insert(index);
}else
if(combinations.remainingB>0&&combinations.p1Picked.count(index)==0&&combinations.p2Picked.count(index)==0&&combinations.p3Picked.count(index)==0){
combinations.remainingB--;
combinations.totalEX+=dat[index].ex2;
combinations.p2.emplace_back(std::pair<int,int>{index,dat[index].ex2});
combinations.p2.push_back(std::pair<int,int>{index,dat[index].ex2});
combinations.p2Picked.insert(index);
}else
if(combinations.remainingC>0&&combinations.p1Picked.count(index)==0&&combinations.p2Picked.count(index)==0&&combinations.p3Picked.count(index)==0){
combinations.remainingC--;
combinations.totalEX+=dat[index].ex3;
combinations.p3.emplace_back(std::pair<int,int>{index,dat[index].ex3});
combinations.p3.push_back(std::pair<int,int>{index,dat[index].ex3});
combinations.p3Picked.insert(index);
}
};
@ -134,8 +134,9 @@ int main(){
bestComboA[caseInd].remainingA=_case.p1Amt;
bestComboA[caseInd].remainingB=_case.p2Amt;
bestComboA[caseInd].remainingC=_case.p3Amt;
SongCombinations testCombo=bestComboA[caseInd];
for(int i=0;i<12;i++){
SongCombinations c1=bestComboA[caseInd];
SongCombinations c1=testCombo;
ChooseSong(c1,dataA,i);
for(int j=0;j<12;j++){
SongCombinations c2=c1;
@ -183,8 +184,9 @@ int main(){
bestComboB[caseInd].remainingA=_case.p1Amt;
bestComboB[caseInd].remainingB=_case.p2Amt;
bestComboB[caseInd].remainingC=_case.p3Amt;
SongCombinations testCombo=bestComboB[caseInd];
for(int i=0;i<12;i++){
SongCombinations c1=bestComboB[caseInd];
SongCombinations c1=testCombo;
ChooseSong(c1,dataB,i);
for(int j=0;j<12;j++){
SongCombinations c2=c1;

@ -0,0 +1,33 @@
This repository contains general build scripts and pipelines for all languages that I incorporate in my projects. The goal is to provide an easy retrieval and update system for the project. Each script will be a shell script containing the following template:
```bash
#Short description about what I do
#Language[Folder]
# #The script's code goes in here.
# rm -Rf out/*
# javac -Xlint:unchecked -cp ${PROJECT_DIR}/.. -d ${OUT_DIR} ${PROJECT_DIR}/*.java
# printf "\n\n\nRunning Program...\n\n"
# cd $OUT_DIR
# java ${MAIN_CLASS} "$@"
# ../scripts/clean.sh
```
Each language will be in the following structure:
```
-<Language>
--<scripts>
---[script files.sh]
```
The `sig` script will display by default any scripts in the `scripts` folder, therefore when creating a project, copy over the scripts folder of the desired language into your project then the `sig` script handles the rest appropriately. If your project requires multiple languages and build setups, then you can use the `sig2` command, which has an additional parameter to specify the language when running it. When setting up a multi-language setup, you'll just copy the entire folder to include the programming language itself. So a multi-language project structure may look something like this:
```
-C
--scripts
---build.sh
---clean.sh
---make.sh
-Java
--scripts
---build.sh
---clean.sh
---jar.sh
```

Binary file not shown.

@ -0,0 +1,75 @@
<!doctype html>
<html lang="en-us">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Emscripten-Generated Code</title>
<style>
html,body { width: 100%; height: 100%; }
body { font-family: arial; margin: 0; padding: 0; background: #000; }
.emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; }
div.emscripten_border { border: none; }
/* the canvas *must not* have any border or padding, or mouse coords will be wrong */
canvas.emscripten { border: 0px none; background-color: black; }
</style>
</head>
<body>
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" tabindex=-1></canvas>
<script type='text/javascript'>
var Module = {
preRun: [],
postRun: [],
canvas: (function() {
var canvas = document.getElementById('canvas');
// As a default initial behavior, pop up an alert when webgl context is lost. To make your
// application robust, you may want to override this behavior before shipping!
// See http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15.2
canvas.addEventListener("webglcontextlost", function(e) { alert('WebGL context lost. You will need to reload the page.'); e.preventDefault(); }, false);
return canvas;
})(),
};
</script>
<script async type="text/javascript" src="_REPLACEME_"></script>
<script type="text/javascript">
Module.canvas.addEventListener("resize", (e) => {
var viewWidth = e.detail.width;
var viewHeight = e.detail.width / Module._olc_WindowAspectRatio;
if(viewHeight > e.detail.height)
{
viewHeight = e.detail.height;
viewWidth = e.detail.height * Module._olc_WindowAspectRatio;
}
// update dom attributes
Module.canvas.setAttribute("width", viewWidth);
Module.canvas.setAttribute("height", viewHeight);
var top = (e.detail.height - viewHeight) / 2;
var left = (e.detail.width - viewWidth) / 2;
// update styles
Module.canvas.style.position = "fixed";
Module.canvas.style.top = top.toString() + "px";
Module.canvas.style.left = left.toString() + "px";
Module.canvas.style.width = "";
Module.canvas.style.height = "";
// trigger PGE update
Module._olc_PGE_UpdateWindowSize(viewWidth, viewHeight);
// ensure canvas has focus
Module.canvas.focus();
e.preventDefault();
});
</script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

@ -0,0 +1,211 @@
#include "pixelGameEngine.h"
//THIS IS WRITTEN USING OLC GPE, CHECK OUT onelonecoder.com
//Or else
class Snake : public olc::PixelGameEngine {
public:
Snake() {
sAppName = "Snake";
}
enum direction { STOP, LEFT, RIGHT, DOWN, UP };
direction dir;
//Game variables
int score;
//Snake variables
float SnakeXPos, SnakeYPos;
float tailUpdateTimer=0;
int tailX[1000], tailY[1000], tailLength = 0;
float x, y;
//Target variables
int fruit1X, fruit1Y, fruit2X, fruit2Y;
bool fruit1 = false, fruit2 = false;
bool GameOver;
void SnakeDead() {
if (GameOver == true) {
Clear(olc::BLACK);
DrawString(ScreenWidth() - ((ScreenWidth() / 2) + (ScreenWidth() / 2.8)), ScreenHeight() / 2 - 5, "Game Over", olc::RED, 1);
}
}
void BorderCollisionCheck() {
if (SnakeXPos <= 3) {
GameOver = true;
SnakeDead();
}
if (SnakeXPos >= ScreenWidth() - 3) {
GameOver = true;
SnakeDead();
}
if (SnakeYPos <= 3) {
GameOver = true;
SnakeDead();
}
if (SnakeYPos >= ScreenHeight() - 3) {
GameOver = true;
SnakeDead();
}
}
void userInput(float speed) {
if (GetKey(olc::Key::UP).bPressed && dir != DOWN) {
dir = UP;
}
if (GetKey(olc::Key::DOWN).bPressed && dir != UP) {
dir = DOWN;
}
if (GetKey(olc::Key::LEFT).bPressed && dir != RIGHT) {
dir = LEFT;
}
if (GetKey(olc::Key::RIGHT).bPressed && dir != LEFT) {
dir = RIGHT;
}
//Move Snake
switch (dir) {
case LEFT:
SnakeXPos -= speed;
break;
case RIGHT:
SnakeXPos += speed;
break;
case DOWN:
SnakeYPos += speed;
break;
case UP:
SnakeYPos -= speed;
break;
}
}
void FruitCoordGen() {
//Fruit1
if (fruit1 == false) {
fruit1X = rand() & ScreenWidth();
fruit1Y = rand() & ScreenHeight();
fruit1 = true;
}
if (fruit1X <= 2 || fruit1X >= ScreenWidth() - 2) {
fruit1X = rand() & ScreenWidth();
}
if (fruit1Y <= 2 || fruit1Y >= ScreenHeight() - 2) {
fruit1Y = rand() & ScreenHeight();
}
//Fruit2
//if (fruit2 == false) {
//fruit2X = rand() & ScreenWidth();
//fruit2Y = rand() & ScreenHeight();
//fruit2 = true;
//}
//if (fruit2X <= 2 || fruit2X >= ScreenWidth() - 2) {
//fruit1X = rand() & ScreenWidth();
//}
//if (fruit2Y <= 2 || fruit2Y >= ScreenHeight() - 2) {
//fruit1Y = rand() & ScreenHeight();
//}
//if (fruit1X == fruit2X) {
//fruit1X = rand() & ScreenWidth();
//}
//if (fruit1Y == fruit2Y) {
//fruit1Y = rand() & ScreenWidth();
//}
}
private:
public:
bool OnUserUpdate(float fElapsedTime) override {
float speed = 20 * fElapsedTime;
Clear(olc::BLACK);
//Draw top border
DrawLine(2, 2, ScreenWidth() - 2, 2, olc::WHITE);
//Draw left border
DrawLine(2, 2, 2, ScreenHeight() - 2, olc::WHITE);
//Draw right border
DrawLine(ScreenWidth() - 2, 2, ScreenWidth() - 2, ScreenHeight() - 2, olc::WHITE);
//Draw bottom border
DrawLine(2, ScreenHeight() - 2, ScreenWidth() - 2, ScreenHeight() - 2, olc::WHITE);
olc::vi2d SnakeHead(SnakeXPos, SnakeYPos);
olc::vi2d SnakeHeadSize(2, 2);
olc::vi2d Fruit(fruit1X, fruit1Y);
olc::vu2d FruitSize(2, 2);
//Snake and fruit collision
if (SnakeHead.x < Fruit.x + FruitSize.x &&
SnakeHead.x + SnakeHeadSize.x > Fruit.x &&
SnakeHead.y < Fruit.y + FruitSize.y &&
SnakeHead.y + SnakeHeadSize.y > Fruit.y) {
fruit1 = false;
score++;
tailLength++;
}
//Draw fruit
DrawRect(fruit1X, fruit1Y, 1, 1, olc::RED);
//Fruit coord gen
FruitCoordGen();
//Border collision
BorderCollisionCheck();
tailUpdateTimer -= fElapsedTime; //Decrement the tail timer by the game elapsed time.
if ( tailUpdateTimer <= 0 ) {
//In order to create a tail following trail, start from the back-most tail and work your way up to the front, setting the previous tail's position to the current tail index's position.
for (int i = tailLength - 1; i > 0; i--) {
tailX[i]=tailX[i-1];
tailY[i]=tailY[i-1];
}
//Now set the front-most tail to the current snake head's position.
tailX[0]=SnakeXPos;
tailY[0]=SnakeYPos;
tailUpdateTimer=0.05; //Every 0.05 seconds we will re-update the tail positions instead of doing it by frame-based timing.
}
//Draw Snake tail
if (tailLength >= 1) {
for (int i = 0; i < tailLength; i++) {
DrawRect(tailX[i], tailY[i], 1, 1, olc::GREEN);
}
}
//Snake position gets adjusted here.
userInput(speed);
//Draw the Snake at its new position.
DrawRect(SnakeXPos, SnakeYPos, 1, 1, olc::DARK_GREEN);
return true;
}
bool OnUserCreate() override {
srand(time(NULL));
dir = STOP;
//Snake X coord gen
SnakeXPos = rand() & ScreenWidth();
if (SnakeXPos <= 3 || SnakeXPos >= ScreenWidth() - 3) {
SnakeXPos = rand() & ScreenWidth();
}
if (SnakeXPos <= 3 || SnakeXPos >= ScreenHeight() - 3) {
SnakeXPos = rand() & ScreenHeight();
}
//Snake Y coord gen
SnakeYPos = rand() & ScreenWidth();
if (SnakeYPos <= 3 || SnakeYPos >= ScreenWidth() - 3) {
SnakeYPos = rand() & ScreenWidth();
}
if (SnakeYPos <= 3 || SnakeYPos >= ScreenHeight() - 3) {
SnakeYPos = rand() & ScreenHeight();
}
return true;
}
};
int main() {
Snake demo;
if (demo.Construct(100, 100, 10, 10))
demo.Start();
return 0;
}

@ -0,0 +1,2 @@
#define OLC_PGE_APPLICATION
#include "pixelGameEngine.h"

File diff suppressed because it is too large Load Diff

@ -0,0 +1,10 @@
export AUTO_UPDATE=true
source utils/define.sh
define PROJECT_NAME "ChampionsLeaguePointSolver"
define CUSTOM_PARAMS "-std=c++17 -lX11 -lGL -lpthread -lpng -lstdc++fs -I/usr/include/lua5.3"
define EMSCRIPTEN_CUSTOM_PARAMS ""
define LANGUAGE "C++"
source utils/main.sh

@ -0,0 +1 @@
sigonasr2 <sigonasr2@gmail.com>

@ -0,0 +1,5 @@
Java/
C/
C++/
scripts/
utils/

@ -0,0 +1,26 @@
export VARS=("")
export LANGUAGE=""
function define() {
VARS+=("$1")
value="${*:2}"
eval export "$1"='$value'
}
if [[ $(pwd) != *"SigScript" && $AUTO_UPDATE = "true" && $1 != "update" ]]; then
source utils/search.sh
find . -type f -name md5 -delete
find . -type f -name filelist -delete
#Check for hashes
FILES=$(cat utils/.updateDirectories)
for f in $FILES
do
search $f
check $f
done
else
echo "Dev build, no checks required."
fi

@ -0,0 +1,5 @@
.coauthors
define.sh
main.sh
search.sh
.updateDirectories

@ -0,0 +1,28 @@
if [ -z "$1" ]
then
echo ""
echo " Usage: ./sig <command> {args}"
echo ""
printf "====\tCurrent Configuration"
printf "\t====================="
for t in ${VARS[@]}
do
printf "\n\t%-15s%20s" $t ${!t}
done
printf "\n====================================================="
echo ""
echo ""
echo " Command List:"
FILES=$(ls -1A ./$LANGUAGE/scripts 2>/dev/null | sed -e 's/\.sh$//' | sed -e 's/^/ /')
for f in $FILES
do
if [ -f "./$LANGUAGE/scripts/$f.sh" ]; then
DESC="$(head -n1 ./$LANGUAGE/scripts/$f.sh)"
printf "\n\t%-15s%-65s" $f "${DESC:1}"
fi
done
echo ""
exit
fi
./$LANGUAGE/scripts/$1.sh "${@:2}"

@ -0,0 +1,4 @@
define.sh:3ecab0dffe2adfb950f3eb7c7061b750 -
main.sh:4e6e9f0650ec790ce2c4364db94f0caa -
search.sh:30e1842e9a13452ea883bb6516d28e1c -
.updateDirectories:971afb892e8280cb4c9ad43fb72a46a0 -

@ -0,0 +1,103 @@
function search() {
FILES2=$(ls -A $1 2>/dev/null)
for g in $FILES2
do
if [ -d $1$g ];
then
echo "$1$g is a directory"
search $1$g/
else
echo "$1$g is a file"
if [ $g != "md5" ] && [ $g != "filelist" ] && [ $g != ".package.files" ]; then
if [ $g != ".coauthors" ] && [ $g != "version_info" ]; then
SUM=$(md5sum < $1$g)
echo "$g:$SUM" >> $1md5
fi
echo "$g" >> $1filelist
else
echo " ignoring $g..."
fi
fi
done
}
function check() {
echo "Check $1"
FILES2=$(ls -A $1 2>/dev/null)
if [ -f "$1/md5" ];
then
echo " md5: http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1md5"
curl -H 'Cache-Control: no-cache, no-store' -s "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1md5" --output /tmp/out
cmp -s $1/md5 /tmp/out
if [ "$?" -ne 0 ]
then
echo " Differences detected!"
cat /tmp/out
while IFS= read -r line
do
IFS=':' read -ra split <<< $line
g="${split[0]}"
echo "LINE -- $g"
if [ "$g" != "md5" ] && [ "$g" != "filelist" ] && [ "$g" != ".package.files" ]; then
if [ -f $1$g ];
then
if [ "$g" != ".coauthors" ] && [ "$g" != "version_info" ]; then
echo "++Redownload $1$g..."
if [ -f "$1$g" ]; then
curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $1$g
else
echo "===Could not find directory, assuming regular scripts directory exists."
curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $LANGUAGE/scripts/$g
fi
fi
else
echo "++==Downloading $1$g..."
curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $1$g
fi
fi
done < /tmp/out
fi
fi
if [ -f "$1/filelist" ];
then
echo " filelist: http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1filelist"
curl -H 'Cache-Control: no-cache, no-store' -s "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1filelist" --output /tmp/out
cmp -s $1/filelist /tmp/out
if [ "$?" -ne 0 ]
then
echo " Differences detected!"
cat /tmp/out
while IFS= read -r line
do
IFS=':' read -ra split <<< $line
g="${split[0]}"
echo "LINE -- $g"
if [ "$g" != "md5" ] && [ "$g" != "filelist" ] && [ "$g" != ".package.files" ]; then
if [ -f $1$g ];
then
if [ "$g" != ".coauthors" ] && [ "$g" != "version_info" ]; then
echo "++Redownload $1$g..."
if [ -f "$1$g" ]; then
curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $1$g
else
echo "===Could not find directory, assuming regular scripts directory exists."
curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $LANGUAGE/scripts/$g
fi
fi
else
echo "++==Downloading $1$g..."
curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $1$g
fi
fi
done < /tmp/out
fi
fi
for g in $FILES2
do
if [ -d $1$g ];
then
echo "$1$g is a directory"
check $1$g/
fi
done
}
Loading…
Cancel
Save