+ {frontMatter.title} +
++ {format(parseISO(frontMatter.date), 'MMMM dd, yyyy')} +
+diff --git a/posts/poel-layouts.mdx b/competition/pole_layouts.mdx similarity index 100% rename from posts/poel-layouts.mdx rename to competition/pole_layouts.mdx diff --git a/posts/regulations.mdx b/competition/regulations.mdx similarity index 95% rename from posts/regulations.mdx rename to competition/regulations.mdx index 62c444a..43a34d8 100644 --- a/posts/regulations.mdx +++ b/competition/regulations.mdx @@ -18,7 +18,7 @@ image: '/images/robottop.png' * **"Робо - Шорт-Трек" роботы собраны на произвольной платформе** ## 1. Участники: -*
Команда состоит 1, 2-x учащихся с 1 по 11 класс
+*Команда состоит 2-x учащихся с 1 по 11 класс
*Каждая команда на соревнованиях должна привезти с собой одного **уникального робота**
*Возрастные группы участников разделяются по возрастам. Если в команде присутствуют участники из разных классов, то определяется по самому старшему ученику.
* Номинация "Робо-слалом" @@ -69,7 +69,9 @@ image: '/images/robottop.png' height={256} priority /> -Рисунок 1 - Вид игрового поля +Рисунок 1 - Вид игрового поля +* [Скачать макет поля - Робо - слалом.pdf](https://robotop.krasnikov.pro/field_layouts/RoboSlaum.pdf) +* [Скачать макет поля - Робо - слалом.cdr (Corel Draw)](https://robotop.krasnikov.pro/field_layouts/RoboSlaum.cdr) ## 3. Номинация "Шорт-Трек" #### 3.1 Первый и второй этап: @@ -107,7 +109,13 @@ image: '/images/robottop.png' height={256} priority /> -Рисунок 2 - Вид игрового поля +Рисунок 2 - Вид игрового поля +* [Скачать макет поля - Робо - Шорт-Трек.pdf](https://robotop.krasnikov.pro/field_layouts/ShortTrack.pdf) +* [Скачать макет поля - Робо - Шорт-Трек.cdr (Corel Draw)](https://robotop.krasnikov.pro/field_layouts/ShortTrack.cdr) + +#### Пример выполнения задания +[](https://youtu.be/kJZpQvrXYss) + ## 4 Робот: * К соревнованиям в номинациях **«Робо-слалом»** и **«Шорт-Трек»** допускаются роботы, собранные на базе произвольного конструктора. @@ -135,11 +143,11 @@ image: '/images/robottop.png' * После окончания заезда никто кроме судьи не имеет права трогать роботов и Игровые Элементы. Затем судьи должны подсчитать баллы и объявить результат заезда (подробности подсчета см. следующий раздел). После этого команды могут забрать своих роботов. Если команды с чем-то не согласны, то они могут спокойно изложить свои аргументы судьям. Роботы продолжают оставаться на своих местах до окончания спора. * Помните, что только 2 члена команды должны находиться возле игрового поля! В итоге судья выносит окончательное решение. В случае, если найти решение в обсуждении не удается, судьи оставляют за собой решение о необходимости переигровки заезда. * Команда объявляется дисквалифицированной с заезда, если ни один из роботов команды полностью не покинул стартовую площадку в течение заезда. -### 5.2 СТАТИЧЕСКАЯ ПРОВЕРКА +### 5.2 Статическая проверка * Перед тем, как выступать на Поле, роботы осматриваются судьей, который проверяет их на соответствие правилам. Роботы должны быть готовы к демонстрации всех своих возможных действий. -### 5.3 ДИНАМИЧЕСКАЯ ПРОВЕРКА: +### 5.3 Динамическая проверка: * Роботы должны в течение 30 секунд продемонстрировать хотя бы одно действие, приносящее минимальное количество очков. Роботы проверяются на Игровом Поле. Также может быть проверено соответствие некоторым обязательным требованиям правил. -### 5.4 ЗНАЧИТЕЛЬНЫЕ ИЗМЕНЕНИЯ В РОБОТЕ: +### 5.4 Значительные изменения в роботе: * В случае значительных технических изменений (функциональных, структурных, размерных...), выполненных после прохождения этапа допуска к соревнованиям, необходимо сообщить о них судье. Судьи должны утвердить изменения и, если посчитают необходимым, могут назначить повторную проверку роботу, подвергшемуся доработке. * Если организаторы считают, что робот был модифицирован, может потребоваться повторная гомологизация робота, что запрещает ему соревноваться до тех пор, пока не будет получен повторный допуск. ## 5.5 Определение победителей diff --git a/posts/festival-schedule.mdx b/competition/schedule.mdx similarity index 90% rename from posts/festival-schedule.mdx rename to competition/schedule.mdx index 127ee2a..20571ff 100644 --- a/posts/festival-schedule.mdx +++ b/competition/schedule.mdx @@ -6,7 +6,7 @@ date: '2022-11-10' ## Расписание соревнований -### 20 января 2023 года +### 28 января 2023 года + 09:00 - 09:30 - Регистрация участников + 09:30 - 10:00 - Открытие Соревнований + 10:00 - 12:00 - Подготовка роботов к соревнованиям diff --git a/components/Navigation.tsx b/components/Navigation.tsx index eedf23d..5a294f2 100644 --- a/components/Navigation.tsx +++ b/components/Navigation.tsx @@ -6,12 +6,12 @@ import { useRouter } from 'next/router' const navigation = [ { name: 'Главная', href: '/', as: false }, - { name: 'Правила', href: '/posts/[slug]', as:'regulations'}, - { name: 'Регистрация', href: '/registration', as: false }, - { name: 'Расписание', href: '/posts/[slug]', as:'festival-schedule' }, - { name: 'Макеты поелй', href: '/posts/[slug]', as:'poel-layouts'}, - { name: 'Контакты', href: '/contacts', as: false}, - { name: 'О нас', href: '/about', as: false}, + { name: 'Регламент', href: '/competition/[slug]', as:'regulations', patch:'competition'}, + { name: 'Регистрация', href: '/competition/registration', as: false , patch:'competition' }, + { name: 'Расписание', href: '/competition/[slug]', as: 'schedule' , patch:'competition'}, + { name: 'Макеты полей', href: '/competition/[slug]', as:'pole_layouts' , patch:'competition'}, + { name: 'Контакты', href: '/contacts', as: false , patch:''}, + { name: 'О нас', href: '/about', as: false , patch:''}, ] function classNames(...classes) { @@ -30,7 +30,7 @@ const Navigation = (): JSX.Element => {Организатор соревнований лаборатория робототехники Krasnikov Robotics
Занимаемся робототехникой с 2006 года
Наши ученики участники так соревнований как EUROBOT 2019, EUROBOT 2020, EUROBOT 2021, EUROBOT 2019, Робофест c 2013 года, FLL, РТК
diff --git a/pages/competition/[slug].tsx b/pages/competition/[slug].tsx new file mode 100644 index 0000000..4411f8d --- /dev/null +++ b/pages/competition/[slug].tsx @@ -0,0 +1,95 @@ +import { format, parseISO } from 'date-fns'; +import fs from 'fs'; +import matter from 'gray-matter'; +import { GetStaticPaths, GetStaticProps } from 'next'; +import { serialize } from 'next-mdx-remote/serialize'; +import { MDXRemote, MDXRemoteSerializeResult } from 'next-mdx-remote'; +import Head from 'next/head'; +import Image from 'next/image'; +import Link from 'next/link'; +import path from 'path'; +import rehypeAutolinkHeadings from 'rehype-autolink-headings'; +import rehypeSlug from 'rehype-slug'; +import Layout, { WEBSITE_HOST_URL } from '../../components/Layout'; +import { MetaProps } from '../../types/layout'; +import { PostType } from '../../types/post'; +import { postFilePathsComp, POSTS_PATH_COMP } from '../../utils/mdxUtilsComp'; + +// Custom components/renderers to pass to MDX. +// Since the MDX files aren't loaded by webpack, they have no knowledge of how +// to handle import statements. Instead, you must include components in scope +// here. +const components = { + Head, + Image, + Link, +}; + +type PostPageProps = { + source: MDXRemoteSerializeResult; + frontMatter: PostType; +}; + +const PostPage = ({ source, frontMatter }: PostPageProps): JSX.Element => { + const customMeta: MetaProps = { + title: `${frontMatter.title} - RoboTop`, + description: frontMatter.description, + image: `${WEBSITE_HOST_URL}${frontMatter.image}`, + date: frontMatter.date, + type: 'article', + }; + + return ( ++ {format(parseISO(frontMatter.date), 'MMMM dd, yyyy')} +
+RobotTop – это робототехнический Хакатон, в которых могут принять участие молодые любители робототехники.
-RobotTop – это робототехнический хакатон, в которых могут принять участие молодые любители робототехники.
+
diff --git a/pages/posts/[slug].tsx b/pages/posts/[slug].tsx
index 547d0c4..cee171d 100644
--- a/pages/posts/[slug].tsx
+++ b/pages/posts/[slug].tsx
@@ -8,7 +8,6 @@ import Head from 'next/head';
import Image from 'next/image';
import Link from 'next/link';
import path from 'path';
-import React from 'react';
import rehypeAutolinkHeadings from 'rehype-autolink-headings';
import rehypeSlug from 'rehype-slug';
import Layout, { WEBSITE_HOST_URL } from '../../components/Layout';
@@ -39,6 +38,7 @@ const PostPage = ({ source, frontMatter }: PostPageProps): JSX.Element => {
date: frontMatter.date,
type: 'article',
};
+
return (