- 307
- 62 486
男勝
Japan
Приєднався 14 січ 2019
C++を勉強してる動画投稿していきます。
短い動画。
何かを作ってる動画。
C/C++を勉強されてる方には
もしかすると、ためになるものもあるかもしれませんので。
チャンネル登録して見ていってください。
2022/09/25
Python入門レベルをショートという短い動画で投稿していきます。
C++以上に初心者です。
Pythonは、現在お休み中。
ただの映像だけですで、つまらないかもしれません。
それでもよければ
一緒に勉強していきましょう
短い動画。
何かを作ってる動画。
C/C++を勉強されてる方には
もしかすると、ためになるものもあるかもしれませんので。
チャンネル登録して見ていってください。
2022/09/25
Python入門レベルをショートという短い動画で投稿していきます。
C++以上に初心者です。
Pythonは、現在お休み中。
ただの映像だけですで、つまらないかもしれません。
それでもよければ
一緒に勉強していきましょう
長谷川穂積 vs ウィラポン・ナコンルアンプロモーション(Veeraphol Nakhornluang Promotion)#Veeraphol #長谷川穂積 #ウィラポン
カウンター
#長谷川穂積
#Veeraphol
#ウィラポン
#ボクシング
#boxing
#長谷川穂積
#Veeraphol
#ウィラポン
#ボクシング
#boxing
Переглядів: 53
Відео
長谷川穂積 vs ネストール・ロチャ(Nestor Rocha)
Переглядів 15Місяць тому
左ストレートを囮にする右フックカウンターが好きです。 ネストール・ロシャ?日本語だとロチャ。 #hasegawa #NestorRocha
井上尚弥 vs ジェイソン・モロニー(Jason Moloney)7R 決着シーン #naoyainoue #moloney
Переглядів 271Місяць тому
漫画のようなカウンター #NaoyaInoue #JasonMoloney
アンディーサワー(Andy Souwer) VS ドラゴ(Gago Drago Arutyunyan)
Переглядів 519Місяць тому
綺麗なクロスカウンター #K-1 World Max 2007 #AndySouwer #drago #クロスカウンター
レイ・セフォー(南海の黒豹) VS ジェロム・レ・バンナ(ハイパーバトルサイボーグ)
Переглядів 1,7 тис.Місяць тому
衝撃的すぎるカウンター #カウンター #K-1 #RaySefo #JeromeLeBanner
井上尚弥vs テレンス・ジョン・ドヘニー(Terrence John Doheny) 決着シーン #naoyainoue
Переглядів 6022 місяці тому
井上尚弥vs テレンス・ジョン・ドヘニー(Terrence John Doheny) 決着シーン #naoyainoue
C++ コンソールゲーム作成 ビット演算をふんだんに使ったテトリス#c #coding #tetris
Переглядів 1524 місяці тому
C コンソールゲーム作成 ビット演算をふんだんに使ったテトリス#c #coding #tetris
C言語 C++ コンソールゲーム作成 #3 最終回 ~StopperCueBridge~
Переглядів 2911 місяців тому
C言語 C コンソールゲーム作成 #3 最終回 ~StopperCueBridge~
C言語 C++ コンソールゲーム作成 #2 ~StopperCueBridge~
Переглядів 2911 місяців тому
C言語 C コンソールゲーム作成 #2 ~StopperCueBridge~
C言語 C++ コンソールゲーム作成 #1 ~StopperCueBridge~
Переглядів 4611 місяців тому
C言語 C コンソールゲーム作成 #1 ~StopperCueBridge~
ご返信とご紹介ありがとうございます。 12月に日本へ旅行する予定です。日本に来るのは初めてです。私は日本のことをよく知りません。面白い観光スポットのおすすめはありますか?ありがとう。
面白い?って言われると…残念ながらわからないです。 旅行好きな人間ではないので。 ネットで調べる程度のものしかわからないです。 なるべく身バレはしたくないので、地元のスポットをいうわけにもいきませんので。 日本らしいと言えば京都とか。 温泉だと群馬、別府、熱海あたりが有名ですかね。 漫画の『スラムダンク』好きですか? 好きならその漫画のモデルになった土地に観光するのも面白いかもしれませんね。
これはボクシングの試合ですか? 日本について質問してもいいですか? よろしくお願いします。
ボクシング試合です。世界タイトルマッチですよー。 日本についてですか?どんな事でしょう?私に回答できる内容ならいいですが…一般市民なもんで答えられない事が多いとは思いますが。
モロニーは兄弟とも、もろにパンチを食らうな。
モロニーだけに。 日本人嫌いにならないで欲しいと願うばかりです
Moloney is a good sandbag !
I'm worried about Maloney getting hurt.
Hello my fellow English speakers
STOP WEAKEST OPPONENT. FIGHT WITH CASIMERO. DON'T BE COWARD LITTLE TURTLE 🐢
ところで、カシメロは今何してるのかな…😮
ソースコード見たい
コメントありがとうございます。 あまり、人様に見せれるようなコードではないのですが。 最終的には、以下のような感じになりました。 参考にできるものがあったら、参考にしてみてください。 #include <windows.h> #include <ctime> #include <sstream> #include <iomanip> #include <memory> #pragma comment (lib ,"User32.lib") #pragma comment (lib ,"Gdi32.lib") class DigitalClock { public: enum class firsttime {first ,second ,nocount }; private: time_t tm_t; HFONT font; RECT rc ; bool first; public: DigitalClock() :tm_t(time(nullptr)) ,font {CreateFontA (/*[in] int cHeight */60 ,/*[in] int cWidth */0 ,/*[in] int cEscapement */0 ,/*[in] int cOrientation */0 ,/*[in] int cWeight */FW_NORMAL ,/*[in] DWORD bItalic */false ,/*[in] DWORD bUnderline */false ,/*[in] DWORD bStrikeOut */false ,/*[in] DWORD iCharSet */DEFAULT_CHARSET ,/*[in] DWORD iOutPrecision */OUT_DEFAULT_PRECIS ,/*[in] DWORD iClipPrecision */CLIP_DEFAULT_PRECIS ,/*[in] DWORD iQuality */DEFAULT_QUALITY ,/*[in] DWORD iPitchAndFamily*/DEFAULT_PITCH ,/*[in] LPCSTR pszFaceName */"Sigmar One" ) } ,rc() ,first(true) { } ~DigitalClock() { DeleteObject(font); } void GetClientRect(const HWND& hWnd){ ::GetClientRect(hWnd ,&rc); } void draw_time(const HDC& hdc){ const auto t = localtime(&tm_t); SelectObject(hdc ,font); std::ostringstream oss; oss << std::setfill('0') << std::setw(2) << t->tm_hour << ':' << std::setw(2) << t->tm_min << ':' << std::setw(2) << t->tm_sec ; SetBkMode(hdc ,TRANSPARENT); SetTextColor(hdc ,RGB(255,255,255)); DrawTextA(hdc ,oss.str().c_str() ,lstrlenA(oss.str().c_str()) ,&rc ,DT_CENTER | DT_VCENTER | DT_SINGLELINE); } firsttime update_time(){ const auto temp = localtime(&tm_t)->tm_sec; const auto nowtime = time(nullptr); if(temp == localtime(&nowtime)->tm_sec){ return DigitalClock::firsttime::nocount; }else{ time(&tm_t); if(first){ first = !first; return DigitalClock::firsttime::first; }else return DigitalClock::firsttime::second; } } }; namespace Digi { RECT GetWindowRect(const HWND& hWnd){ RECT rc; ::GetWindowRect(hWnd ,&rc); return rc; } POINT GetPrivateProfileIntA(){ return {/*x*/LONG(::GetPrivateProfileIntA("WNDPOS" ,"x" ,10 ,".\\DigitalClock.ini")) ,/*y*/LONG(::GetPrivateProfileIntA("WNDPOS" ,"y" ,10 ,".\\DigitalClock.ini")) }; } } LRESULT CALLBACK WndProc(HWND hWnd ,UINT msg ,WPARAM wp ,LPARAM lp){ switch(msg){ case WM_CREATE: static_cast<DigitalClock*>(LPCREATESTRUCT(lp)->lpCreateParams)->GetClientRect(hWnd); SetWindowLongPtr(hWnd ,GWLP_USERDATA ,LONG_PTR(LPCREATESTRUCT(lp)->lpCreateParams)); SetTimer(hWnd ,0 ,100 ,nullptr); return 0; case WM_TIMER: { const auto pdc = reinterpret_cast<DigitalClock*>(GetWindowLongPtr(hWnd ,GWLP_USERDATA)); switch(pdc->update_time()){ case DigitalClock::firsttime::first: KillTimer(hWnd ,0); SetTimer(hWnd ,0 ,1000 ,nullptr); case DigitalClock::firsttime::second: InvalidateRect(hWnd ,nullptr ,true); return 0; case DigitalClock::firsttime::nocount: return 0; } } case WM_LBUTTONDOWN: ReleaseCapture (); SendMessage (hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0); return 0; case WM_PAINT: { const auto pdc = reinterpret_cast<DigitalClock*>(GetWindowLongPtr(hWnd ,GWLP_USERDATA)); PAINTSTRUCT ps; const auto hdc = BeginPaint(hWnd ,&ps); pdc->draw_time(hdc); EndPaint(hWnd ,&ps); } return 0; case WM_CLOSE: DestroyWindow(hWnd); return 0; case WM_NCDESTROY: { const auto rc = Digi::GetWindowRect(hWnd); WritePrivateProfileStringA("WNDPOS" ,"x" ,(std::ostringstream() << rc.left).str().c_str() ,".\\DigitalClock.ini"); WritePrivateProfileStringA("WNDPOS" ,"y" ,(std::ostringstream() << rc.top ).str().c_str() ,".\\DigitalClock.ini"); } PostQuitMessage(0); return 0; } return DefWindowProc(hWnd ,msg ,wp ,lp); } int APIENTRY WinMain(HINSTANCE hInstance ,HINSTANCE hPrevInst ,LPTSTR cmdLine ,int cmdShow){ std::unique_ptr<std::remove_pointer_t<HBRUSH> ,decltype(DeleteObject)*> bkbrush {CreateSolidBrush(RGB(50,50,255)) ,DeleteObject }; WNDCLASSEXA wcex = {/*UINT cbSize */sizeof(WNDCLASSEXA) ,/*UINT style */CS_HREDRAW | CS_VREDRAW ,/*WNDPROC lpfnWndProc */WndProc ,/*int cbClsExtra */0 ,/*int cbWndExtra */0 ,/*HINSTANCE hInstance */hInstance ,/*HICON hIcon */LoadIcon(nullptr ,IDI_APPLICATION) ,/*HCURSOR hCursor */LoadCursor(nullptr ,IDC_ARROW) ,/*HBRUSH hbrBackground*/bkbrush.get() ,/*LPCSTR lpszMenuName */nullptr ,/*LPCSTR lpszClassName*/"DigitalClock" ,/*HICON hIconSm */LoadIcon(nullptr ,IDI_APPLICATION) }; if(RegisterClassEx(&wcex)){ DigitalClock dc; const auto wndpos = Digi::GetPrivateProfileIntA(); if(const auto hWnd = CreateWindowExA(/*[in] DWORD dwExStyle */WS_EX_CLIENTEDGE | WS_EX_COMPOSITED | WS_EX_TOPMOST | WS_EX_TOOLWINDOW ,/*[in, optional] LPCSTR lpClassName */"DigitalClock" ,/*[in, optional] LPCSTR lpWindowName*/"DigitalClock" ,/*[in] DWORD dwStyle */WS_POPUP | WS_BORDER | WS_VISIBLE ,/*[in] int X */wndpos.x ,/*[in] int Y */wndpos.y ,/*[in] int nWidth */200 ,/*[in] int nHeight */100 ,/*[in, optional] HWND hWndParent */nullptr ,/*[in, optional] HMENU hMenu */nullptr ,/*[in, optional] HINSTANCE hInstance */hInstance ,/*[in, optional] LPVOID lpParam */&dc )){ MSG msg; while(GetMessage(&msg ,nullptr ,0 ,0)){ DispatchMessage(&msg); } return msg.wParam; } } return EXIT_FAILURE; }
@@男勝-y8j ありがとうです
reset関数のif文をちょっと変えました if(cnt == 0 || cnt == static_cast<int>(PartsID::BOTTOM)){ data = parts.at(PartsID::TOP); }else{ data = parts.at(PartsID::BODY); }
main関数のメインループで使用しているloop変数ですが、loop %= 7にしないといずれオーバーフローしてしまいそうです。 今更気づきました。
当たり判定の設定がいまいち分からない、壁とTミノの左だけしか反応してくれません助けてください
コメントありがとうございます。 コードを拝見してみないとなんとも。 ここのコメントに書けますかね? ちなみに私の動画参考にしていただいてる感じですか?見切れちゃっててよくわからないのかなと思いますが… コツについて述べておきますね。 当たり判定については、テトリミノの座標を管理している変数とは別に変数を用意して、用意した変数に対して足していきます。 当たり判定で当たらなかった状況なら、テトリミノの座標を管理している変数に、用意した変数の値を反映してあげれば良い。 当たり判定で当たりの判定なら、座標はそのままにする。 そんな感じです。
@@男勝-y8j 丁寧な説明ありがとうございます。とてもわかりやすいです。自分の当たり判定のイメージが違っていた事に気がつきました。それを踏まえて頑張って見ます。
拙い説明で申し訳ないです。
アプリ名知りたいです
C/C++ Programming Compiler って言うアプリ名です。 std::cinでの入力が微妙です。 input って言うところに予め入力しておくスタイルなんですよね。 apps.apple.com/jp/app/c-c-programming-compiler/id1160868782
コメント失礼します。ソースコードを教えて頂けませんか?
コメントありがとうございます。長いので、複数に分けてコメントしていきます。よかったら参考にしてみてください。ごみごみしたソースですが・・・
ファイル名:main.cpp --------------------------------------------------------- #include <vector> #include <iostream> #include <conio.h> #include "common.h" #include "cursor.h" #include "bomb.h" class minesweeper{ std::map <level , params > levelparams; std::map <symbol ,const char* > symbols ; level select_level; std::vector<std::vector<const char*>> cells ; cursor cur ; bomb* pbomb ; void create_hints(); void dupli_check_in(std::vector<size_t>& nums ,const size_t& pos); void create_bomb_set_pos(); key_event press_key_code_trans(const char& ch); const char* is_hint(const pos& p); void comb(const pos p); size_t board_count(); void main_loop(); void output(); public: minesweeper(level l); ~minesweeper(); }; minesweeper::minesweeper(level l) :levelparams {{level::BEGINNER ,{10 ,{ 9, 9}}} ,{level::INTERMEDIATE ,{40 ,{16,16}}} ,{level::ADVANCED ,{99 ,{16,30}}} } ,symbols {{symbol::NON ," "} ,{symbol::BOMB ,"×"} ,{symbol::BOARD,"■"} } ,select_level(l) ,cells ( levelparams.at(l).cellsize.y ,{levelparams.at(l).cellsize.x ,symbols.at(symbol::BOARD)} ) ,pbomb(new bomb(levelparams.at(select_level).bomb_num ,levelparams.at(select_level).cellsize)) { const auto po = cur.appear(); cells[po.y][po.x] = cur.symbol; main_loop(); } minesweeper::~minesweeper() { delete pbomb; } key_event minesweeper::press_key_code_trans(const char& ch) { switch(ch){ case 'i': return key_event::UP ; case 'k': return key_event::DOWN ; case 'j': return key_event::LEFT ; case 'l': return key_event::RIGHT; case 13 : return key_event::SWEEP; case 'e': return key_event::END ; default : return key_event::NON ; } } void minesweeper::comb(const pos p) { int start_x = (p.x > 0 ? -1 : 0); int start_y = (p.y > 0 ? -1 : 0); int end_x = (p.x < levelparams.at(select_level).cellsize.x - 1 ? 2 : 1); int end_y = (p.y < levelparams.at(select_level).cellsize.y - 1 ? 2 : 1); for(int y = start_y;y < end_y;++y){ for(int x = start_x;x < end_x;++x){ if(y != 0 || x != 0){ int _y = p.y + y; int _x = p.x + x; if(cells[_y][_x] == symbols.at(symbol::BOARD)){ if(const char* str_num = pbomb->is_hint({size_t(_y),size_t(_x)})){ cells[_y][_x] = str_num; }else{ cells[_y][_x] = symbols.at(symbol::NON); comb({size_t(_y),size_t(_x)}); } } } } } } size_t minesweeper::board_count() { size_t cnt = 0; for(const auto& row : cells){ for(const auto& col : row){ if(col == symbols.at(symbol::BOARD)) ++cnt; } } return cnt; } void minesweeper::main_loop() { for(const char* backup_symbol = symbols.at(symbol::BOARD);;){ output(); const auto code = press_key_code_trans(_getch()); const auto def_pos = cur.appear(); switch(code){ case key_event::NON : continue; case key_event::END : return ; case key_event::SWEEP: if(backup_symbol == symbols.at(symbol::BOARD)){ if(*pbomb == def_pos){ cells[def_pos.y][def_pos.x] = symbols.at(symbol::BOMB); output(); std::cout << "Game Over "; return; } if(!(backup_symbol = pbomb->is_hint(def_pos))){ backup_symbol = symbols.at(symbol::NON); cells[def_pos.y][def_pos.x] = symbols.at(symbol::NON); comb(def_pos); } if(levelparams.at(select_level).bomb_num == board_count()){ output(); std::cout << "Game Clear "; return; } } break; default: cur.move(code ,(size_t(code) & 1 ? (code == key_event::DOWN ? levelparams.at(select_level).cellsize.y - 1 : levelparams.at(select_level).cellsize.x - 1) : 0 )); cells[def_pos.y][def_pos.x] = backup_symbol; const auto po = cur.appear(); backup_symbol = cells[po.y][po.x]; cells[po.y][po.x] = cur.symbol; } } } void minesweeper::output() { std::cout << "\033[0;0H"; for(const auto& row : cells){ for(const auto& col : row){ std::cout << col; } std::cout << ' '; } } void msg(level l) { std::map<level ,const char*> levelnames{{level::BEGINNER,"初級"},{level::INTERMEDIATE,"中級"},{level::ADVANCED,"上級"}}; for(size_t i = 0;i < size_t(level::ADVANCED) + 1;++i){ std::cout << "\033[4 + 2 * i" << (size_t(l) == i ? "[" : " ") << levelnames.at(static_cast<level>(i)) << (size_t(l) == i ? "]" : " ") << ' ' ; } } int main(){ system("cls"); for(level selectlevel = level::BEGINNER;;){ std::cout << "\033[0;0H" << "Start MineSweeper Please select a level "; msg(selectlevel); switch(_getch()){ case 'i': selectlevel == level::BEGINNER ? selectlevel = level::BEGINNER : selectlevel = static_cast<level>(size_t(selectlevel) - 1) ;break; case 'k': selectlevel == level::ADVANCED ? selectlevel = level::ADVANCED : selectlevel = static_cast<level>(size_t(selectlevel) + 1) ;break; case 13 : { std::cout << "\033[2J"; minesweeper ms(selectlevel); std::cout << "one more time? yes is [y] press or no is [any key] press "; char ans; if(std::cin >> ans){ if(ans == 'y'){ std::cout << "\033[2J"; break; }else return EXIT_SUCCESS; } } } } }
ファイル名:cursor.h ---------------------------------------------------------------------- #ifndef __CURSOR_H__ #define __CURSOR_H__ #include <map> #include "common.h" class cursor { size_t y; size_t x; std::map<key_event ,void(cursor::*)(size_t)> move_list; void move_up (size_t range_min); void move_down (size_t range_max); void move_left (size_t range_min); void move_right(size_t range_max); public: const char* symbol; cursor(); void move (key_event code ,size_t range); pos appear( ); }; #endif ---------------------------------------------------------------------- ファイル名:cursor.cpp ---------------------------------------------------------------------- #include "cursor.h" cursor::cursor() :y() ,x() ,move_list {{key_event::UP ,&cursor::move_up } ,{key_event::DOWN ,&cursor::move_down } ,{key_event::LEFT ,&cursor::move_left } ,{key_event::RIGHT,&cursor::move_right} } ,symbol("↓") { } void cursor::move_up (size_t range_min){y == range_min ? y = range_min : --y;} void cursor::move_down (size_t range_max){y == range_max ? y = range_max : ++y;} void cursor::move_left (size_t range_min){x == range_min ? x = range_min : --x;} void cursor::move_right(size_t range_max){x == range_max ? x = range_max : ++x;} void cursor::move(key_event code ,size_t range) { (this->*move_list.at(code))(range); } pos cursor::appear() { return {y ,x}; }
ファイル名:bomb.h ---------------------------------------------------------------------- #ifndef __BOMB_H__ #define __BOMB_H__ #include "common.h" #include <vector> class bomb { std::vector<pos> bombs_pos; std::vector<hint> hints ; size_t quantity ; cell_size cellsize ; const char* symbol ; const char* menber_to_str[9] = {" ","1","2","3","4","5","6","7","8"}; void dupli_check_in (std::vector<size_t>& nums ,const size_t& pos); void create_bomb_set_pos(); void create_hints (); public: bomb(size_t quantity ,cell_size cellsize); const char* is_hint(const pos& p); bool operator==(const pos& p); }; #endif ---------------------------------------------------------------------- ファイル名:cursor.h ---------------------------------------------------------------------- #include "bomb.h" #include <ctime> #include <iostream> bomb::bomb(size_t quantity ,cell_size cellsize) :quantity(quantity) ,cellsize(cellsize) ,symbol ("×") { create_bomb_set_pos(); create_hints(); } void bomb::dupli_check_in(std::vector<size_t>& nums ,const size_t& pos) { for(auto& n :nums){ if(n == pos) return; } nums.push_back(pos); } void bomb::create_bomb_set_pos() { srand( time(nullptr) ); std::vector<size_t> nums; for(;nums.size() != quantity;){ const auto pos = rand() % (cellsize.y * cellsize.x); nums.size() > 1 ? dupli_check_in(nums ,pos) : nums.push_back(pos); } for(const auto& n : nums) bombs_pos.push_back({n / cellsize.x ,n % cellsize.x}); } void bomb::create_hints() { for(const auto& bp : bombs_pos){ for(int y = -1;y < 2;++y){ for(int x = -1;x < 2;++x){ if(y != 0 || x != 0){ int _y = bp.y + y; int _x = bp.x + x; if(0 <= _y && _y <= cellsize.y - 1 && 0 <= _x && _x <= cellsize.x - 1 ){ if(hints.size() == 0) hints.push_back({{size_t(_y),size_t(_x)},1}); else{ bool no_record = true; for(auto& h : hints){ if(h.p.y == _y && h.p.x == _x){ ++h.num; no_record = false; }else continue; } if(no_record) hints.push_back({{size_t(_y),size_t(_x)} ,1}); } } } } } } } const char* bomb::is_hint(const pos& p) { for(const auto& h : hints){ if(h.p.y == p.y && h.p.x == p.x) return menber_to_str[h.num]; } return nullptr; } bool bomb::operator==(const pos& p) { for(const auto& bp : bombs_pos){ if(bp.y == p.y && bp.x == p.x) return true; } return false; }
ファイル名:common.h ------------------------------------------------------------ #ifndef __COMMON_H__ #define __COMMON_H__ enum class level {/*初級*/BEGINNER ,/*中級*/INTERMEDIATE ,/*上級*/ADVANCED }; enum class symbol {/*空白*/NON ,/*ボム*/BOMB ,/*床 */BOARD ,/*数字*/NUM }; enum class key_event {UP ,DOWN ,LEFT ,RIGHT ,SWEEP ,END ,NON }; struct cell_size { /*縦*/size_t y; /*横*/size_t x; }; struct params { size_t bomb_num; cell_size cellsize; }; struct pos { size_t y; size_t x; }; struct hint { pos p ; size_t num; }; #endif
c言語のcsvについて(予約システム)について質問したものです。 youtubeのネタに使っていただいてもかまいません。 よろしくお願いいたします。
メッセージありがとうございます。 今週中には、何かしらアップロードしようとは思うのですが。 いつまでに仕上げる。みたいな期限ってありますか
@@男勝-y8j なるべく早いほうが良いですが、かつさんの負担にならないようにしていただけるだけで結構です。私は、あくまで聞いている立場ですので。
とりあえず、会員登録からログインまで作ることができました。 どーですかね? 予約システムとCsv別物として考えて作ってみました。
3:43 個人的に好きです。、
7ラウンドでは、8ラウンドで勝つために、わざとフルトンに打たせて疲れさせたそうです。確かに判定でも7ラウンドは井上尚弥は負けてました。
やばいよね… 判定で勝てる状況作っておきながら、観客が何を求めてるのか。 その求められている事を実現するにはどうするのか?を試合中に考えるとか。すげーの一言です
イノウェイ!!!
結構好きかもw
フルトン弱い、弱すぎる。 試合前の威勢はどこに? この程度でベルト2本持っていられるなんて。。 この階級も楽勝でしょうね。
予想より、頑張ってたよ。素人でもわかる、格の違い。
試合する前、フルトン最強説が出回っていたのでドキドキしてましたが…1ラウンドから終始上行ってて。 その分、弱いと錯覚しちゃうかもしれない。 ジャブの速さは、これまでの対戦相手にはないから、井上尚弥チャンプじゃなければ勝てるボクシングかもしれない。 ただただ、井上尚弥チャンプがモンスターだったという
何回みても凄い🔥🥊
すごいタイミングよく右ストレートが当たってますね。 フルトンのリズムを読んであてに行ってる。 メイウェザーvsモズリーの時のようなパンチだった
フィゲロア戦でクリンチが上手いと評されていたフルトンがクリンチを一瞬で振り払われるパワーと圧力・・引くだけのプルトンに
筋肉がエグいwですもん。 パワー
ジャブ早っ!
両者とも早くて。 井上尚弥チャンプも初めてなんじゃないかな? ここまでジャブ早い相手と対戦したの。 でも終始上行ってましたけどね。
NTTの画像が悪すぎる
実況も最後は舞い上がったのか、ジュニアバンタムって言ってるw
確かに言ってる。全然気づかなかったw
ジュニアフェザーウエイトチャンピオンっていってますね スーパーバンタムの昔の呼び名 勢いでつい出ちゃったんでしょうね
昔は言ってましたが今回はジュニアバンタムって言ってますよ。
これはなかなか聞きとれないと思いますが、ジュニアフェザーって言ってます。。
ジュニアフェザーウェイトだね。笑 キャプションあるよ。
今回のシャッフルとcompクラスにとんでもないミスがあり。 次回の動画で修正したいと思います。
質問させていただいてたものです!回答期限のため返信できなかったので、こちらでさせてコメントさせていただきました。 昨日もお返事いただきありがうございます。 再入力の表示無事でました! あと2点引っかかる点があります。 1点目は初めにyキー以外を押すと、強制終了させられる点。 2点目はyキーを押すと、2行目の表示がy入力値は?と出てくる点です。
メッセージありがとうございます。 まずは、1点目。 普通に無限ループにで処理を追加した例です。yとn以外入力されたら、再入力っていう感じです。 void input_yesno(char* p_ans,const char* promp){ for(;;){ printf("%s はい > press 'y' key いいえ > press 'n' key > " ,promp); if(1 == scanf("%s",p_ans)){ if(*p_ans == 'y' || *p_ans == 'n') break; else printf("再入力してください "); }else *p_ans = 'n'; } } もしかしたら、input_no関数同様の以下の処理を行わないとダメかもしれません。 ただ、input_noと違って、文字配列の取得なので問題ないかとは思いますが。 上記で失敗するようでしたら、以下のことを試してみてください。 void input_yesno(char* p_ans,const char* promp){ char dels[128]; for(;;){ printf("%s はい > press 'y' key いいえ > press 'n' key > " ,promp); if(1 == scanf("%s",p_ans)){ if(*p_ans == 'y' || *p_ans == 'n') break; else{ printf("再入力してください "); fgets(dels ,sizeof dels ,stdin); fflush(stdin); } }else *p_ans = 'n'; } } 2点目の「2行目の表示がy入力値は?と出てくる」どんなタイミングでしょうか。 例えば、最初に起動しゲームを開始するため、yを押してenterを押したタイミング。とか 1回目のゲーム終了し、続けてゲームを開始する際に聞かれるときに入力するyなのか。 こちらの件についても、私の環境では現象が出ないんですよね・・・
返信ありがとうございます。 2点目に関してですが、yを入力してenterを押した後のタイミングですね!
ちなみに使ってる環境はvisualstadio とC++になります。
@@山田涼平-t3g もしかすると、無限に入力され続けてしまうかもしれませんが。 input_yesno関数のscanfなんだけども。 scanf(“ %c”,&ans)って言う風に変えてみてもらえますか? %cの前は、空白1つ入れてください。
@@山田涼平-t3g 私と同じですね。 gcc環境でも、visual studioコンパイラでも問題ないんだけどなぁー。
なぜか。動画で作った際のファイルが空になってしまって・・バックアップとっておいたものになります。 そのため、動画とはちょっと違うところがあるかもしれません。 #include <iostream> #include <climits> bool is_number(const char* str){ return *str >= '0' && *str <= '9'; } bool is_atoz(const char* str){ return *str >= 'a' && *str <= 'z'; } bool is_AtoZ(const char* str){ return *str >= 'A' && *str <= 'Z'; } int ctoi(const char* str){ if(is_number(str)){ return *str - '0'; }else if(is_atoz(str)){ return 10 + (*str - 'a'); }else return 10 + (*str - 'A'); } void init(const char** p ,int* signe){ for(;**p == ' ' || **p == '\t';++*p); switch(**p){ case '-': ++*p; *signe = -1; break; case '+': ++*p; *signe = 1; break; default : *signe = 1; break; } } int prefix(const char** str){ if(**str == '0' && *(*str + 1) == 'x' || *(*str + 1) == 'X'){ *str += 2; return 16; }else if(**str == '0' && *(*str + 1) != 'x' || *(*str + 1) == 'X'){ ++*str; return 8; }else return 10; } #include <cmath> int conversion(const char* str ,char** endptr ,int& base ,long& result){ if(is_number(str) || is_atoz(str) || is_AtoZ(str) && ctoi(str) < base){ if(int keta = conversion(str + 1 ,endptr ,base ,result)){ if(result + ctoi(str) * std::pow(base ,keta) < LONG_MAX) result += ctoi(str) * std::pow(base ,keta); else result = LONG_MAX; return keta + 1; }else{ result += ctoi(str); return keta + 1; } }else{ *endptr = const_cast<char*>(str); return 0; } return 0; } long myStrtol(const char* str ,char** endptr ,int base){ long result = 0; int signe; init(&str ,&signe); if(base == 0) base = prefix(&str); conversion(str ,endptr ,base ,result); return result * signe; } int main(){ char* p; std::cout << "自作版 "; std::cout << myStrtol(" -100--" ,&p ,0) << ' '; std::cout << *p << ' '; std::cout << "標準lib "; std::cout << strtol(" -100--" ,&p ,0) << std::endl; std::cout << *p << ' '; }
知恵袋に貼られてたURLから来ました めちゃわかりやすくて面白いので登録しました 質問なんですが よくあるマインスイーパーは初手必ずゼロ(周囲八マス地雷なし)を引いてパッと一気に広がりますが あれは初手の後に、初手と初手付近八マスを除く領域から地雷をランダム生成してる って解釈で大丈夫です? それか難易度選択の段階でランダムな地雷生成を複数通り作って、初手の位置に応じて一つを返す みたいなことしてるんですかね
チャンネル登録ありがとうございます。 めちゃ嬉しいっす。 僕のは、初手は博打ですw。難易度選択した後すぐに爆弾をランダムで配置してますので、初手からゲームオーバーすることが多々あります。 課題で用いられるゲームではありそうですが、その場合初手は以降に爆弾配置することとする。と言う条件を見たことがあります。
Visual Studioでコードビルドするとエラーになるとの報告受けてます。 それ以外の環境では、コンパイルでき遊ぶこともできます。 #include <stdio.h> #include <stdlib.h> #include <time.h> struct ANS_IN { unsigned base; unsigned range; unsigned result; }; void input_yesno(char* p_ans,const char* promp){ printf("%s はい > press 'y' key" ,promp); if(1 == scanf("%s",p_ans)){ if(*p_ans != 'y') *p_ans = 'n'; }else *p_ans = 'n'; } #define N 3 void input_no(unsigned* start ,unsigned* end){ char dels[128]; const char* msg[N] = {"入力値は?","範囲は?","再入力してください "}; for(unsigned* s = start;s < end;){ printf("%s",msg[s - start]); if(1 == scanf("%u",s)){ if(*s >= 0 && *s <= 100) ++s; else printf("%s",msg[N - 1]); }else{ scanf("%s",dels); printf("%s",msg[N - 1]); } } } #undef N void determin_number(unsigned* p_com){ srand((unsigned)time(NULL)); *p_com = rand() % 101; } void ans_loop(struct ANS_IN* p_ans ,unsigned* p_com){ printf("p_com = %u ",*p_com);/*本番の時は、削除してください*/ for(p_ans->result = 0;;){ input_no(&p_ans->base ,&p_ans->range + 1); ++p_ans->result; if(p_ans->base == *p_com) return; if(p_ans->base + p_ans->range == *p_com || (int)(p_ans->base - p_ans->range) == (int)*p_com) printf("範囲はちょうどです "); else if(p_ans->base + p_ans->range > *p_com && (int)(p_ans->base - p_ans->range) < (int)*p_com) printf("範囲内です "); else printf("範囲外です "); } } void result_disp(struct ANS_IN* p_ans){ printf("正解しました。%u 回かかりました ",p_ans->result); } void game_loop(){ char ans; do{ unsigned com_no; determin_number(&com_no); struct ANS_IN ans_in; ans_loop(&ans_in ,&com_no); result_disp(&ans_in); input_yesno(&ans ,"ゲームを続けますか?"); }while(ans == 'y'); } int main(){ char ans; input_yesno(&ans ,"開始しますか?"); if(ans == 'y') game_loop(); }
ρɾσɱσʂɱ 😣
#include <iostream> #include <vector> struct mychar { char ch; unsigned int n; }; struct mystring { std::vector<mychar> string; mystring() { } mystring(const char* s) { string.push_back({*s ,1}); for(int i = 1;;++i){ if(*(s + i) == '\0') break; bool unique = true; for(auto& a : string){ if(*(s + i) == a.ch){ ++a.n; unique = false; break; } } if(unique) string.push_back({*(s + i) ,1}); } } mystring operator*(const mystring& ms){ mystring new_mystring; new_mystring.string = string; for(const auto& r : ms.string){ bool unique = true; for(auto& sr : new_mystring.string){ if(r.ch == sr.ch){ sr.n += r.n; unique = false; break; } } if(unique) new_mystring.string.push_back({r.ch ,1}); } return new_mystring; } }; std::ostream& operator<<(std::ostream& ostm ,mystring& ms) { for(const auto& a : ms.string){ if(a.n > 1) ostm << '(' << a.ch << '^' << a.n << ')'; else ostm << a.ch; } return ostm; } std::ostream& operator<<(std::ostream& ostm ,std::vector<mychar>& mc) { for(const auto& r : mc) ostm << r.ch; return ostm; } int main(){ mystring s1{"ab"}; mystring s2{"b"}; mystring s3 = s1 * s2; std::cout << s1.string << " x " << s2.string << " = " << s3 << ' '; }
番外編として今回のプログラムをC++にしてる動画作りましたので、併せて見ていただけると幸いです。 ua-cam.com/video/z3iwNjSPlF8/v-deo.html
時間と分の入力で、”何分?”って出力させるのを忘れました。
入力間違いとか、コンパイルエラー出したりとか、お見苦しいのですが。 動画そのものも長いですし、スキップ・早送りして見ていただけると幸いです。
c++の勉強かな? 普通にjavascriptとcanvasで作ればいいのにって思っちゃった comはオセロは枚数で評価関数作れるから簡単そうだね
コメントありがとうございます m(_ _)m C++お勉強です。 オブジェクト指向を意識しながら。 C言語ではなくC++になるように。